Использовал я однажды 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>
В данном примере цвет фона грида поменяется на красный только если BoolCondition1 = True И BoolCondition2 = False И StringCondition3 = "test". т. е. для условий выполняется операция логическое И.
Как показа практика, если BoolCondition1 вернет false, то геттеры BoolCondition2 и StringCondition3 вызваны не будут, так как значения этих свойств не повлияют на конечный результат.
Вот такой вот он умный движок WPF.