先通俗讲一下样式:
- 样式主要是用来对控件进行修改,使得控件表现出特定的表现状态。比如,普通的Button按钮,很简陋。通过样式可以使得按钮在创建的时候,就具有一些特别的样子(前景色,边框颜色,高度,宽度等等)。这种情况适合用于在前段需要构建大量控件时,避免了重复工作(而且在前端.xaml文件中没有for循环)。
Style最重要的两个元素是Setter和Trigger:
- Setter类:用来设置控件的静态外观风格。Setter类的Property属性用来指明你想为目标的哪个属性赋值;Setter类的Value属性则是你提供的属性值。
- Trigger类:用来设置控件的行为风格。 Trigger类是触发器,即当某些条件满足时会触发一个行为。Trigger类的Property是Trigger关注的属性名称;Trigger类的Setters属性(注意带s),此属性值是一组Setter,一旦触发条件被满足,这组Setter的“属性—值”就会被应用,触发条件不在满足后,各属性会被还原。
Style样式的使用示例1:
<Window x:Class="StyleTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:StyleTest"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<Style x:Key="BtnStyle" TargetType="Button">
<Style.Setters>
<Setter Property="Foreground" Value="Purple"/>
<Setter Property="FontFamily" Value="宋体"/>
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Height" Value="30"/>
</Style.Setters>
</Style>
</Window.Resources>
<Grid >
<StackPanel Orientation="Vertical" HorizontalAlignment="Center">
<Button Content="普通按钮" Margin="0,100,0,0"/>
<Button Content="使用样式后的按钮" Style="{StaticResource BtnStyle}" Margin="0,30,0,0" />
</StackPanel>
</Grid>
</Window>
运行结果:
可以看到默认生成的按钮,以及使用了样式后的按钮。
==注意:==因为Style的内容属性是Setters,所以可以直接在Style标签的内容区域写Setter,即如下图:
Style样式的使用示例2:
下面的例子中包含一个针对CheckBox的Style,当CheckBox的IsChecked属性为true时候前景色和字体会改变。代码如下:
运行结果:
注意:Trigger不是Style的内容,所以Style.Trigger 这层标签不能省略。但是Trigger的Setters 属性是Trigger的内容属性,所以Trigger.Setter这层标签是可以省略的。因此代码可以简化: