2012-01-11 3 views
0
<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 ===> Сделай что-нибудь.

Я последовал this один для мульти-триггеров

Но "Binding Path="Property Value =5"" эта линия, очевидно, не так.

Что мне следует здесь написать, чтобы сравнить значение 5 или нет Спасибо!

ответ

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

Если у вас нет более одного условия, вам не нужен MultiDataTrigger.

Если вы хотите сравнить со значением, вы можете использовать converter, где Binding.ConverterParameter установлено на указанное значение. Преобразователь просто сравнил значение и параметр (возможно, с синтаксическим разбором, применяемым к параметру, если он не передан как int)

Не ставьте ничего, кроме пути собственности, в поле Path. Преобразователь должен напрямую возвращать true или false, поскольку это предположительно ожидается MultiBinding.Converter.

+0

на самом деле у меня есть много, чтобы сравнить. Я хочу вызвать действие, когда значение от 0 до 20 фактически. Можете ли вы привести мне пример кода, как это сделать? Благодарю. –

+0

@AndersLind: Я не буду, если понадобится пример для конвертера, посмотрите ссылку, связанную мной. И сравнение значений и строк синтаксического анализа вряд ли нуждается в этом примере, если это вам понадобится, посмотрите на методы 'Parse' и' TryParse', которые можно найти примерно на каждом примитивном типе. –