DataSwitch ru - Leksiqq/WpfMarkupExtension GitHub Wiki
Применяется в разметке XAML аналогично <DataTrigger>. Имеет атрибут Binding с тем же смыслом. Содержимое состоит из элементов <DataTrigger> без атрибута Binding. Действует как будто все <DataTrigger> имеют одинаковый Binding, но при этом значение привязки вычисляется только один раз.
в демо на вкладке «Demo3» на консоль выводятся обращения к вычислению значения привязки в случае с использованием <DataSwitch> и без него.
<TextBlock DockPanel.Dock="Top">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<l:DataSwitch Binding="{Binding Text, ElementName=T1,
Converter={l:ParameterizedResource DataConverter},
ConverterParameter=T1Text|DataSwitch, Mode=OneWay}">
<DataTrigger Value="1">
<Setter Property="Text" Value="Один"/>
</DataTrigger>
<DataTrigger Value="2">
<Setter Property="Text" Value="Два"/>
</DataTrigger>
<DataTrigger Value="3">
<Setter Property="Text" Value="Три"/>
</DataTrigger>
<DataTrigger Value="4">
<Setter Property="Text" Value="Четыре"/>
</DataTrigger>
<DataTrigger Value="">
<Setter Property="Text" Value=""/>
</DataTrigger>
</l:DataSwitch>
</Style.Triggers>
<Setter Property="Text" Value="Не могу понять"/>
</Style>
</TextBlock.Style>
</TextBlock>
Раньше: (BindingProxy) Начало:(Обзор) Дальше:(BoolExpressionConverter)