web-dev-qa-db-ja.com

TriggerとDataTriggerの違いは何ですか?

それらは同じように見えます。大きな違いはありますか?私は何かが足りないと思います。

45
Jerry Nixon

通常のトリガーは、依存関係プロパティにのみ応答します。

データトリガーは、任意の.NETプロパティによってトリガーできます(Bindingプロパティを設定することにより)。ただし、そのセッターは依存関係プロパティのみをターゲットにできます。

45
Sean U

別の違いは、DataTriggerを別のコントロール、StaticResourceなどにバインドできることです。

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

Triggerを使用する場合にのみ、スタイルが設定されているインスタンスを調べることができます。たとえば、ボタンに適用されたTriggerIsPressedの値を検査できますが、Textが空の場合にTextBoxを無効にしたい場合は、同じフォームのButtonの(たとえば)TextBox値を検査できません。 。

27
user1228

簡単な答え(私が眠ろうとしているとき)-トリガーは 依存関係プロパティ (通常はGUIプロパティ)で機能しますが、データトリガーは任意の.NETプロパティ(通常はViewModelのプロパティ実装 INotifyPropertyChanged )。

17
RichardOD