将多触发器的绑定与值进行比较

本文关键字:比较 绑定 触发器 | 更新日期: 2023-09-27 18:20:01

<MultiDataTrigger>
    <MultiDataTrigger.Conditions>
        <Condition>
            <Condition.Binding>
                <MultiBinding Converter="{StaticResource BooleanOr}">
                    <Binding Path="Property Value =5"/>
                    <Binding Path="Property Value =10"/>
                </MultiBinding>
            </Condition.Binding>
        </Condition>
    </MultiDataTrigger.Conditions>
//

/根据条件在这里做一些事情....

该代码表示当值方程 5 或 20 ===> 做某事时。

我遵循了这个多触发器

"Binding Path="Property Value =5""这条线显然是错误的。

我应该在这里写什么才能比较值是否为 5谢谢!

将多触发器的绑定与值进行比较

您需要另一个转换器来查看一个值是否等于您要比较的任何值

<MultiBinding Converter="{StaticResource BooleanOr}">
    <Binding Path="Value" ConverterParameter="5" Converter="{StaticResource IsValueEqualParameterConverter}" />
    <Binding Path="Value" ConverterParameter="10" Converter="{StaticResource IsValueEqualParameterConverter}" />
</MultiBinding>

另一种选择是使用DataTriggers

<Style>
    <Setter Property="SomeProperty" Value="FalseValue" />
    <Style.Triggers>
        <DataTrigger Binding="{Binding Value}" Value="5">
            <Setter Property="SomeProperty" Value="TrueValue" />
        </DataTrigger>
        <DataTrigger Binding="{Binding Value}" Value="10">
            <Setter Property="SomeProperty" Value="TrueValue" />
        </DataTrigger>
    </Style.Triggers>
</Style>

如果您没有多个条件,则不需要MultiDataTrigger

如果要与某个值进行比较,可以使用将Binding.ConverterParameter设置为所述值的转换器。转换器只会比较值和参数(如果不作为int传递,则可能会对参数进行解析(

当然,不要将属性路径以外的任何东西放入Path中。转换器应直接返回truefalse,因为这可能是MultiBinding.Converter所期望的。