触发器和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中的属性)触发。