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

时间:2012-01-11 02:56:23

标签: c# wpf xaml triggers multidatatrigger

<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>

///根据条件做点什么......

代码表示值eqauls 5或20 ===&gt;做点什么。

我关注this一个用于多重触发器

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

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

2 个答案:

答案 0 :(得分:0)

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

如果要与某个值进行比较,可以使用converter,其中Binding.ConverterParameter设置为所述值。转换器只会比较值和参数(如果没有作为int传递,可能会使用应用于参数的解析)

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

答案 1 :(得分:0)

您需要另一个转换器来查看一个值是否等于您与

进行比较的任何值
<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>