【问题标题】:Compare multi-trigger's binding with value比较多触发器的绑定和值
【发布时间】:2012-02-07 11:23:34
【问题描述】:
<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>

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

代码表示当 Value 等于 5 或​​ 20 ===> 做某事。

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

但是"Binding Path="Property Value =5""这行显然是错误的。

我应该在这里写什么来比较 Value 是否为 5 谢谢!

【问题讨论】:

    标签: c# wpf xaml triggers multidatatrigger


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 其实我有很多可以比较的。我想在实际值为 0 ~ 20 时触发动作。你能给我一些代码示例如何做到这一点吗?谢谢。
      • @AndersLind:我不会,如果需要转换器的示例,请查看我链接的参考。比较值和解析字符串也几乎不需要示例,如果需要,您可能需要查看 ParseTryParse 方法,它们几乎可以在每种原始类型上找到。
      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2019-08-10
      • 1970-01-01
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      相关资源
      最近更新 更多