Простейшим примером будет страница с двумя флажками и кнопкой. У кнопки есть два источника данных, один из которых привязан к свойству IsChecked каждого флажка, а установщики указывают на свойство кнопки IsEnabled. В процессе поиска я нашел рекомендации установить для свойства «IsEnabled» значение false и написать DataTrigger для каждого из ваших условий «или», чтобы установить для него значение true. Это потому, что MultiTrigger использует оператор «И».
Привязка работает, но не с той функцией, которую я ищу. Если CheckBox1 отмечен, то кнопка включена. Если флажок CheckBox2 установлен, кнопка остается активной. Если флажок CheckBox1 снят, кнопка отключена. Каковы подходы, чтобы сохранить кнопку включенной в этом сценарии, поскольку CheckBox2 все еще проверен?
Кажется, что это должно быть выполнимо в XAML, так как он обрабатывает только логические свойства элементов управления, существующих в XAML, и устанавливает логические значения, но, похоже, мы получаем DataTrigger (если и только если) и MultiTrigger ( Все условия, так что "И"). Есть ли способ написать триггер для «ЛЮБОГО из этих условий»?
Быстрый пример XAML:
<CheckBox x:Name="CheckBox1" />
<CheckBox x:Name="CheckBox2" />
<Button Text="Submit" IsEnabled="False">
<Button.Triggers>
<DataTrigger TargetType="Button" Binding="{Binding Source={x:Reference CheckBox1}, Path=IsChecked}" Value="True">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
<DataTrigger TargetType="Button" Binding="{Binding Source={x:Reference CheckBox2}, Path=IsChecked}" Value="True">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Button.Triggers>
</Button>