触发器Trigger、DataTrigger、EventTrigger

触发器包含有一个Setter集合,并根据一个或多个条件执行Setter中的属性改变。对于每个FrameworkElement来说都有Triggers集合,也可以放在Styles里复用。
触发器有三种类型:
Trigger 属性触发器,当单个依赖属性的值发生改变时触发。当属性失去这个值时,这些被触发执行的Setter集合会自动被撤销,即自动重置以前的值。
DataTrigger 数据触发器,当自定义的.NET属性发生改变时触发。
EventTrigger 事件触发器,内部不能是简单的Setter集合,而必须是TriggerAction的实例。

MultiTriggerMultiDataTrigger

当所有条件都满足时,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>
posted @ 2020-06-12 15:08  wesson2019  阅读(665)  评论(0编辑  收藏  举报