他们似乎是一样的。有显着差异吗?我想我错过了什么。
答案 0 :(得分:40)
常规触发器仅响应依赖项属性。
任何.NET属性都可以触发数据触发器(通过设置其Binding属性)。但是,它的setter仍然只能定位依赖项属性。
答案 1 :(得分:23)
另一个区别是DataTrigger
可以绑定到另一个控件,StaticResource等等。
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger
Binding="{Binding SomeProperty,
ElementName=someOtherControl"
Value="Derp">
<!-- etc -->
使用Trigger
时,您只能检查设置样式的实例。例如,应用于Button的Trigger
可以检查IsPressed
的值,但它无法检查Text
的{例如} TextBox
值如果您希望在Button
为空时禁用TextBox
,请在同一表单上。
答案 2 :(得分:16)
简短的回答(因为我即将入睡) - 触发器在dependency properties上工作(通常是GUI属性),而数据触发器可以由任何.NET属性触发(通常是实现的ViewModel中的属性) INotifyPropertyChanged)。