2013-08-18 2 views
3

Как мы можем сопоставить в MultiDataTrigger? Ина нормальный DataTrigger, мы могли бы поставить ее как таковую:Как провести сравнение в мультитатагергере

<i:Interaction.Triggers> 
     <ei:DataTrigger Binding="{Binding Count}" Comparison="LessThan" Value="5"> 
      <ei:ChangePropertyAction PropertyName="IsEnabled" Value="False"/> 
     </ei:DataTrigger> 
</i:Interaction.Triggers> 

Но как мы помещаем сравнение, как это в состоянии MultiDataTrigger? Я искал, но не нашел решения. Пожалуйста помоги. Благодарю.

ответ

0

Вы можете создать конвертер в привязке, который возвращает true или false в зависимости от того, что вы хотите. Тогда вместо 'Value = "5"', вы должны поставить

Value={StaticResource True} 

и вы определяете статический объект

<Application.Resources> 
    ... 
    <s:Boolean x:Key="True">True</s:Boolean> 
    <s:Boolean x:Key="False">False</s:Boolean> 
</Application.Resources> 
2

Вы можете использовать PropertyChangedTrigger (msdn):

В приведенном ниже примере мы проверяем условие больше 1 и меньше 100 для свойства Count:

<TextBlock x:Name="textBlock" Background="Green" Text="{Binding Path=Count}"> 
    <i:Interaction.Triggers> 
     <ei:PropertyChangedTrigger Binding="{Binding Path=Count}"> 
      <i:Interaction.Behaviors> 
       <ei:ConditionBehavior> 
        <ei:ConditionalExpression> 
         <ei:ComparisonCondition LeftOperand="{Binding Count}" Operator="NotEqual" RightOperand="{x:Null}" /> 
         <ei:ComparisonCondition LeftOperand="{Binding Count}" Operator="GreaterThan" RightOperand="1" /> 
         <ei:ComparisonCondition LeftOperand="{Binding Count}" Operator="LessThan" RightOperand="100" /> 
        </ei:ConditionalExpression> 
       </ei:ConditionBehavior>       
      </i:Interaction.Behaviors> 
      <ei:ChangePropertyAction PropertyName="Background"> 
       <ei:ChangePropertyAction.Value> 
        <SolidColorBrush Color="Red"/> 
       </ei:ChangePropertyAction.Value> 
      </ei:ChangePropertyAction> 
     </ei:PropertyChangedTrigger>    
    </i:Interaction.Triggers> 
</TextBlock> 
+0

Есть ли способ t o делать это, если вам нужно привязать к нескольким свойствам? (Например, выражение эквивалентно эквиваленту MultiDataTrigger?) Или мы ограничиваемся только использованием преобразователей внутри MultiDataTrigger? – GrantA