触发器Trigger、DataTrigger、EventTrigger
触发器包含有一个Setter集合,并根据一个或多个条件执行Setter中的属性改变。对于每个FrameworkElement来说都有Triggers集合,也可以放在Styles里复用。
触发器有三种类型:
Trigger 属性触发器,当单个依赖属性的值发生改变时触发。当属性失去这个值时,这些被触发执行的Setter集合会自动被撤销,即自动重置以前的值。
DataTrigger 数据触发器,当自定义的.NET属性发生改变时触发。
EventTrigger 事件触发器,内部不能是简单的Setter集合,而必须是TriggerAction的实例。
MultiTrigger与MultiDataTrigger
当所有条件都满足时,Setter集合才会被调用。
DataTrigger
<DataTrigger Binding="{Binding Path=State}" Value="1">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
MultiTrigger
作用于多个依赖属性。
MultiDataTrigger
绑定到任何类型的多个属性。
<!--当TextBox有内容,且ComboBox不是第一项时,按钮置灰-->
<Button Grid.Column="1" Content="重置">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource ButtonDefaultStyle1}">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=TextBoxTargetSearchContent, Path=Text.Length}" Value="0"/>
<Condition Binding="{Binding ElementName=CombBoxTargetType, Path=SelectedValue}" Value="0"/>
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="False"/>
<Setter Property="Foreground" Value="Red"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>