Они кажутся одинаковыми. Есть ли существенная разница? Я думаю, что чего-то не хватает.
Какая разница между триггером и DataTrigger?
Ответ 1
Регулярный триггер реагирует только на свойства зависимостей.
Триггер данных может запускаться любым свойством .NET(путем установки его свойства Binding). Однако его сеттеры могут по-прежнему ориентироваться только на свойства зависимостей.
Ответ 2
Другое отличие состоит в том, что DataTrigger
может быть привязан к другому элементу управления, StaticResource и т.д. и т.д.
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger
Binding="{Binding SomeProperty,
ElementName=someOtherControl"
Value="Derp">
<!-- etc -->
Вы можете проверить только экземпляр, на котором установлен стиль при использовании Trigger
. Например, Trigger
, примененный к Button, может проверять значение IsPressed
, но он не сможет проверить значение (например) Text
значения TextBox
в той же форме, если вы хотите отключите Button
, если TextBox
пуст.
Ответ 3
Короткий ответ (когда я собираюсь спать). Триггер работает на свойства зависимостей (обычно GUI-свойства), тогда как триггеры данных могут запускаться любым свойством .NET(обычно это свойство в ViewModel, которое реализует INotifyPropertyChanged).