标签:wpf trigger
构成Style最重要的两种元素是Setter和Trigger,Setter类帮助设置控件的静态外观风格,Trigger类帮助设置控件的行为风格。
Setter类的Property属性用来指明想为目标的哪个属性赋值;Setter类的Value属性则是提供的属性值。
使用{x:Null}可以显示地清空Style。示例如下:
XAML代码:
<Window x:Class="MyTestWpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyTestWpfApplication"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:c="clr-namespace:System.Collections;assembly=mscorlib"
Title="WPF" Height="132" Width="300" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Style TargetType="{x:Type TextBlock}">
<Style.Setters>
<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!"/>
<TextBlock Text="by tim 2009.12.23" Style="{x:Null}"/>
</StackPanel>
</Window>
其中的<Style.Setters></Style.Setter>可以省略而直接写中间部分。
如果想设置控件的ControlTempalte,只需要把Setter的Property设为Template并为Value提供一个ControlTemplate对象即可。
===============================================================
Trigger,触发器,即当某些条件满足时会触发一个行为。有事件触发型的EventTrigger,数据变化触发型的Trigger/DataTrigger,多条件触发型的MultiTrigger/MultiDataTrigger等。
Trigger也有Property和Value这两个属性。Property属性是Trigger关注的属性名称,Value是触发条件。Trigger类还有一个Setters属性,此属性值是一组Setter,一旦触发条件满足,这组Setter的“属性-值”就会被应用,触发条件不再满足后,各属性值就会被还原。示例如下:
XAML代码:
<Window x:Class="MyTestWpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyTestWpfApplication"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:c="clr-namespace:System.Collections;assembly=mscorlib"
Title="WPF" Height="130" Width="300" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Style TargetType="CheckBox">
<Style.Triggers>
<Trigger Property="IsChecked" Value="true">
<Trigger.Setters>
<Setter Property="FontSize" Value="20"/>
<Setter Property="Foreground" Value="Orange"/>
</Trigger.Setters>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<CheckBox Content="悄悄的我走了" Margin="5"/>
<CheckBox Content="正如我悄悄的来" Margin="5"/>
<CheckBox Content="我挥一挥衣袖" Margin="5"/>
<CheckBox Content="不带走一片云彩" Margin="5"/>
</StackPanel>
</Window>
=========================================================================
MultiTrigger必须多个条件同时成立时才会被触发。MultiTrigger比Trigger多了一个Conditions属性,需同时成立的条件就存储在这个集合中。示例如下:
XAML代码:
<Window x:Class="MyTestWpfApplication.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyTestWpfApplication"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:c="clr-namespace:System.Collections;assembly=mscorlib"
Title="WPF" Height="130" Width="300" WindowStartupLocation="CenterScreen">
<Window.Resources>
<Style TargetType="CheckBox">
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="true"/>
<Condition Property="Content" Value="正如我悄悄的来"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="FontSize" Value="20"/>
<Setter Property="Foreground" Value="Orange"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel>
<CheckBox Content="悄悄的我走了" Margin="5"/>
<CheckBox Content="正如我悄悄的来" Margin="5"/>
<CheckBox Content="我挥一挥衣袖" Margin="5"/>
<CheckBox Content="不带走一片云彩" Margin="5"/>
</StackPanel>
</Window>
本文出自 “墨池小样儿” 博客,请务必保留此出处http://306702895.blog.51cto.com/8366753/1636289
标签:wpf trigger
原文地址:http://306702895.blog.51cto.com/8366753/1636289