それらは同じように見えます。大きな違いはありますか?私は何かが足りないと思います。
通常のトリガーは、依存関係プロパティにのみ応答します。
データトリガーは、任意の.NETプロパティによってトリガーできます(Bindingプロパティを設定することにより)。ただし、そのセッターは依存関係プロパティのみをターゲットにできます。
別の違いは、DataTrigger
を別のコントロール、StaticResourceなどにバインドできることです。
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger
Binding="{Binding SomeProperty,
ElementName=someOtherControl"
Value="Derp">
<!-- etc -->
Trigger
を使用する場合にのみ、スタイルが設定されているインスタンスを調べることができます。たとえば、ボタンに適用されたTrigger
はIsPressed
の値を検査できますが、Text
が空の場合にTextBox
を無効にしたい場合は、同じフォームのButton
の(たとえば)TextBox
値を検査できません。 。
簡単な答え(私が眠ろうとしているとき)-トリガーは 依存関係プロパティ (通常はGUIプロパティ)で機能しますが、データトリガーは任意の.NETプロパティ(通常はViewModelのプロパティ実装 INotifyPropertyChanged )。