开发工具与关键技术:WPF C#
作者:黄济民
撰写时间:2021年10月15日
1、Setter,设置器。什么的设置器呢?属性值的。我们给属性赋值的时候一般都采用“属性名=属性值”的形式。Setter类的Property属性用来指明你想为目标的那个属性赋值;Setter类的Value属性则是你提供的属性值。
2、下面的例子中在Window的资源词典中放置一个针对TextBlock的Style,Style中使用若干Setter来设定TextBlock的一些属性,这样程序中的TextBlock就会具有统一的风格,除非你使用{x:Null}显示地清空Style
XAML代码如下:
<Window.Resources>
<!--定义TextBlock样式-->
<Style TargetType="TextBlock">
<Style.Setters>
<!--字体大小:24-->
<Setter Property="FontSize" Value="24"/>
<!--文本装饰:下划线-->
<Setter Property="TextDecorations" Value="Underline"/>
<!--字体样式:斜体-->
<Setter Property="FontStyle" Value="Italic"/>
</Style.Setters>
</Style>
</Window.Resources>
<StackPanel Margin="5">
<TextBlock Text="Hello WPF"/>
<TextBlock Text="This is a sample for Style!"/>
<!--使用{
x:Null}显示地清空Style-->
<TextBlock Text="by Tim 2020.06.19" Style="{x:Null}"/>
</StackPanel>
因为Style的内容属性是Setters,所以我们可以直接在
<Style TargetType="TextBlock">
<!--字体大小:24-->
<Setter Property="FontSize" Value="24"/>
<!--文本装饰:下划线-->
<Setter Property="TextDecorations" Value="Underline"/>
<!--字体样式:斜体-->
<Setter Property="FontStyle" Value="Italic"/>
</Style>
3、Style中的Trigger
Trigger,触发器,即当某些条件满足时会触发一个行为(比如某些值的变化或动画的发生等)。触发器比较像事件。事件一般是由用户操作触发的,而触发器除了有事件触发型的EventTrigger外还有数据变化触发型的Trigger/DataTrigger及多条件触发型的MultiTrigger/MultiDataTrigger等。
一、基本Trigger
Trigger类是最基本的触发器。类似于Setter,Trigger也有Property和Value这两个属性,Property是Trigger关注的属性名称,Value是触发条件。Trigger类还有一个Setter属性,此属性值是一组Setter,一旦触发条件被满足,这组Setter的“属性—值”就会被应用,触发条件不在满足后,各属性值会被还原。下面这个例子中包含一个针对CheckBox的Style,当CheckBox的IsChecked属性为true的时候前景色和字体会改变。XAML代码如下:
<Window.Resources>
<!--复选框CheckBox样式-->
<Style TargetType="CheckBox">
<Style.Triggers>
<!--IsChecked选中改变字体大小为20,字体样式为橙色Orange-->
<Trigger Property="IsChecked" Value="true">
<Trigger.Setters>
<Setter Property="FontSize" Value="20"/>
<Setter Property="Foreground" Value="Orange"/>
</Trigger.Setters>
</Trigger>
</Style.Triggers>
</Style&