В чем разница между триггером и DataTrigger? - PullRequest
41 голосов
/ 28 июня 2011

Они кажутся одинаковыми. Есть ли существенная разница? Я думаю, что что-то упустил.

Ответы [ 3 ]

41 голосов
/ 28 июня 2011

Обычный триггер реагирует только на свойства зависимостей.

Триггер данных может запускаться любым свойством .NET (путем установки его свойства Binding).Однако его установщики могут по-прежнему ориентироваться только на свойства зависимостей.

24 голосов
/ 15 июля 2011

Другое отличие состоит в том, что DataTrigger может быть связан с другим элементом управления, StaticResource и т. Д. И т. Д.

<Style TargetType="TextBox">
  <Style.Triggers>
    <DataTrigger 
      Binding="{Binding SomeProperty, 
                        ElementName=someOtherControl" 
      Value="Derp">
      <!-- etc -->

Вы можете проверить только тот экземпляр, на котором установлен стиль, при использовании Trigger. Например, Trigger, примененный к кнопке, может проверить значение IsPressed, но он не сможет проверить (например) Text значение TextBox в той же форме, если вы хотите отключите Button, если TextBox был пуст.

16 голосов
/ 28 июня 2011

Короткий ответ (как я собираюсь спать) - триггер работает с свойствами зависимостей (обычно с графическим интерфейсом), тогда как триггеры данных могут быть инициированы любым свойством .NET (обычно это свойство вViewModel, которая реализует INotifyPropertyChanged ).

...