Новый ответ
Извините, я неправильно понял вопрос.Я бы выставил другое свойство из вашего DataContext
, которое просто возвращает true / false, если все элементы в коллекции проверены или нет, и основал бы Text
/ IsEnabled
вашей кнопки на этом свойстве, используя DataTrigger
<Style TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="False" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsAllChecked}" Value="True">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
Старый ответ
DataTriggers просто принимают привязку и проверяют, равен ли результат некоторому значению.
<Style TargetType="{x:Type TextBox}">
<Setter Property="IsEnabled" Value="False" />
<Style.Triggers>
<DataTrigger Binding="{Binding Done}" Value="True">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
Если вам нужно проверить более одного условия,вам нужно MultiDataTrigger
<Style TargetType="{x:Type TextBox}">
<Setter Property="IsEnabled" Value="False" />
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=InProgress}" Value="True" />
<Condition Binding="{Binding Path=Done}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="True" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
Обратите внимание, что значение по умолчанию для setter является частью стиля.Это важно, потому что если вы установите значение по умолчанию для <TextBox>
, тогда оно будет иметь более высокий приоритет, чем сработавшие значения, поэтому сработавшие значения не смогут изменить текущее значение.