What's the difference between a Trigger and a DataTrigger?

后端 未结 3 1767
春和景丽
春和景丽 2021-02-02 05:46

They seem the same. Is there a significant difference? I think I am missing something.

相关标签:
3条回答
  • 2021-02-02 06:23

    Another difference is that a DataTrigger can be bound to another control, a StaticResource, etc etc.

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

    You can only examine the instance on which the style is set when using a Trigger. For example, a Trigger applied to a Button can inspect the value of IsPressed, but it would not be able to inspect the (for example) Text value of a TextBox on the same form if you wished to disable the Button if the TextBox was empty.

    0 讨论(0)
  • 2021-02-02 06:29

    A regular Trigger only responds to dependency properties.

    A DataTrigger can be triggered by any .NET property (by setting its Binding property). However, its setters can still target only dependency properties.

    0 讨论(0)
  • 2021-02-02 06:46

    The short answer (as I'm about to sleep)- A trigger works on dependency properties (typically GUI properties) whereas data triggers can be triggered by any .NET property (typically a property in a ViewModel that implements INotifyPropertyChanged).

    0 讨论(0)
提交回复
热议问题