Сравните привязку мульти-триггера со значением
<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 eqauls 5 или 20 ===> Сделайте что-нибудь.
Я следовал за этим для мульти-триггеров
Но "Binding Path="Property Value =5""
эта строка явно неверна.
Что я должен написать здесь, чтобы сравнить Значение 5 или нет Спасибо!
2 ответа
Вам понадобится другой конвертер, чтобы увидеть, равно ли одно значение тому, с которым вы сравниваете
<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
,