天天看点

Silverlight中样式使用方式

本来不打算写这篇博,其实关于Silverlight中样式很简单但 又感觉这里面东西虽少但很琐碎,要用到地方还需要在回头看.

Silverlight中通过使用样式来控制控件感官效果,本质上和HTML元素定义样式有些类似. 如果进行分类的话可以分成:

A:内置样式

B:全局样式

其实在Silverlight对样式控制这块没有具体的分什么内置和全局,主要是为了区分样式的使用方式 才这么叫方便用户的理解

所谓的内置就是对单个XAML中元素直接在标签中定义样式属性,内置样式缺点在于它不可重用,额外的代码使的XAML文件页面代码容易和主题业务代码混合,照成一定混乱,不推荐使用这种方式.

--内置样式  

 <Button Content="测试Button" Canvas.Left="30" Canvas.Top="120" Height="25"   

            Foreground="Black" 

            Background="Azure" 

            FontSize="14" 

            >  

            </Button>  

  //从上面可以看出直接在标签中定义 

全局正好解决这个问题,可以使定义的样式重用,而且是XAML文件页面代码更加简洁,只需用户专注于业务

--在App.xaml文件中<ApplicationResource>节点中定义共用样式  

--定义样式标签<Style>    

   <Application.Resources>  

        <!--add the Application Resources-->  

        <!--Define the CSS Style About WebControllers-->  

        <Style x:Key="firstSty" TargetType="Button">  

            <Setter Property="FontSize" Value="15"></Setter>  

            <Setter Property="FontFamily" Value="微软雅黑"></Setter>  

            <Setter Property="Foreground" Value="Red"></Setter>  

            <Setter Property="Background" Value="Silver"></Setter>  

        </Style>  

        <Style x:Key="secondSty" TargetType="Button">  

            <Setter Property="Foreground" Value="Black"></Setter>  

            <Setter Property="Background" Value="blue"></Setter>  

    </Application.Resources>  

--<Style>标签中X:key主要用来唯一表示样式  TargetType:指定样式作用的目标控件是什么类型  

--子节点<Setter> 通过Property和Value来设置具体的样式属性和值  

在XAML页面中引用:

<!--测试定义在App.xaml文件中样式定义-->  

            <Button Content="firsttext" Canvas.Left="30" Canvas.Top="120" Height="25"   

             Foreground="Black" 

             Background="Azure" 

             FontSize="14" 

             Style="{StaticResource firstSty}" 

   --通过标签中Style属性StaticResource标记句法来指定具体的样式 

注意问题:样式定义冲突

--这是在App.XAML中定义的样式  

<Application.Resources>  

 </Application.Resources>  

--XAML页面中引用  

<Button Content="firsttext" Canvas.Left="30" Canvas.Top="120" Height="25"   

            Style="{StaticResource firstSty}" 

//在页面引用中有再次定义了BackGround和FontSize属性,这时标签会从就近原则来样式,就是以先取标签内的属性为主,然  

//后在来查看Style中的对外引用  

那么这样BackGround显示为Azure 而非App.XAML中定义的Silver(银灰色) 

本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765428

继续阅读