它们看起来是一样的。有什么显著的区别吗?我想我错过了什么。
一个普通的 Trigger
只响应依赖性属性。
A DataTrigger
可以由任何.NET属性触发(通过设置其 Binding
属性)。) 然而,它的设置器仍然只能针对依赖属性。
另一个区别是 DataTrigger
可以绑定到另一个控件、一个StaticResource等等等等。
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger
Binding="{Binding SomeProperty,
ElementName=someOtherControl"
Value="Derp">
<!-- etc -->
当使用一个 Trigger
. 例如,a Trigger
应用于Button,可以检查 IsPressed
但它无法检查(例如) Text
价值 TextBox
如果您希望禁用该功能,请在同一张表格上选择 Button
如果 TextBox
是空的。
简短的回答(当我要睡觉的时候)--触发器工作在 依赖属性 (典型的是GUI属性),而数据触发器可以由任何.NET属性(典型的是ViewModel中的一个实现了 INotifyPropertyChanged).