本来不打算写这篇博,其实关于Silverlight中样式很简单但 又感觉这里面东西虽少但很琐碎,要用到地方还需要在回头看.
Silverlight中通过使用样式来控制控件感官效果,本质上和HTML元素定义样式有些类似. 如果进行分类的话可以分成:
A:内置样式
B:全局样式
其实在Silverlight对样式控制这块没有具体的分什么内置和全局,主要是为了区分样式的使用方式 才这么叫方便用户的理解
A:内置样式
所谓的内置就是对单个XAML中元素直接在标签中定义样式属性,内置样式缺点在于它不可重用,额外的代码使的XAML文件页面代码容易和主题业务代码混合,照成一定混乱,不推荐使用这种方式.
- --内置样式
- <Button Content="测试Button" Canvas.Left="30" Canvas.Top="120" Height="25"
- Foreground="Black"
- Background="Azure"
- FontSize="14"
- >
- </Button>
- //从上面可以看出直接在标签中定义
B:全局样式
全局正好解决这个问题,可以使定义的样式重用,而且是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="FontFamily" Value="微软雅黑"></Setter>
- <Setter Property="FontSize" Value="15"></Setter>
- <Setter Property="Foreground" Value="Black"></Setter>
- <Setter Property="Background" Value="blue"></Setter>
- </Style>
- </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}"
- >
- </Button>
- --通过标签中Style属性StaticResource标记句法来指定具体的样式
注意问题:样式定义冲突
- --这是在App.XAML中定义的样式
- <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>
- </Application.Resources>
- --XAML页面中引用
- <Button Content="firsttext" Canvas.Left="30" Canvas.Top="120" Height="25"
- Background="Azure"
- FontSize="14"
- Style="{StaticResource firstSty}"
- >
- //在页面引用中有再次定义了BackGround和FontSize属性,这时标签会从就近原则来样式,就是以先取标签内的属性为主,然
- //后在来查看Style中的对外引用
- 那么这样BackGround显示为Azure 而非App.XAML中定义的Silver(银灰色)
本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/765428