Оптимизации в WPF MultiDataTrigger

By | October 4, 2013

Advertisement from Google

Использовал я однажды MultiDataTrigger в WPF приложении, и стало мне интересно а применяется ли для условий оптимизация на подобии оператора && в C#, когда второй операнд вычисляется только если первый равен true.

Напомню, для того что бы сработал MultiDataTrigger необходиом выполнение всех условий заданных в блоке Conditions:

<Style TargetType="Grid">
  <Setter Property="Background" 
             Value="MediumAquamarine" />
  <Style.Triggers>
    <MultiDataTrigger>
      <MultiDataTrigger.Conditions>
        <Condition Binding="{Binding BoolCondition1}" 
                      Value="True" />
        <Condition Binding="{Binding BoolCondition2}" 
                      Value="False" />
        <Condition Binding="{Binding StringCondition3}" 
                      Value="test" />
      </MultiDataTrigger.Conditions>
      <Setter Property="Background" 
                 Value="Red" />
    </MultiDataTrigger>
  </Style.Triggers>
</Style>

Advertisement from Google

В данном примере цвет фона грида поменяется на красный только если BoolCondition1 = True И BoolCondition2 = False И StringCondition3 = “test”. т. е. для условий выполняется операция логическое И.

Как показа практика, если BoolCondition1 вернет false, то геттеры BoolCondition2 и StringCondition3 вызваны не будут, так как значения этих свойств не повлияют на конечный результат.

Вот такой вот он умный движок WPF.

Leave a Reply

Your email address will not be published. Required fields are marked *