触发器和DataTrigger有什么区别?

他们似乎是一样的。 有什么重大的区别? 我想我错过了一些东西。

常规触发器只响应依赖项属性。

数据触发器可以由任何.NET属性触发(通过设置其绑定属性)。 但是,它的setter仍然只能定位依赖属性。

另一个区别是一个DataTrigger可以绑定到另一个控件,一个StaticResource等等

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

只能使用Trigger检查设置了样式的实例。 例如,应用于Button的Trigger可以检查IsPressed的值,但是如果您希望在TextBox为空的情况下禁用Button则无法检查同一表单上TextBox的(例如) Text值。

简短的回答(就像我即将睡眠) – 触发器对依赖属性 (通常是GUI属性)起作用,而数据触发器可以由任何.NET属性(通常是实现INotifyPropertyChanged的ViewModel中的属性)触发。