将多触发器的绑定与值进行比较
本文关键字:比较 绑定 触发器 | 更新日期: 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
中。转换器应直接返回true
或false
,因为这可能是MultiBinding.Converter
所期望的。