触发器和数据触发器有啥区别?
Posted
技术标签:
【中文标题】触发器和数据触发器有啥区别?【英文标题】:What's the difference between a Trigger and a DataTrigger?触发器和数据触发器有什么区别? 【发布时间】:2011-09-23 20:32:20 【问题描述】:它们看起来一样。有显着差异吗?我想我错过了什么。
【问题讨论】:
这能回答你的问题吗? What are the different triggers in WPF? 【参考方案1】:简短的回答(因为我要睡觉了)- 触发器适用于 dependency properties(通常是 GUI 属性),而数据触发器可以由任何 .NET 属性触发(通常是 ViewModel 中实现 @987654322 的属性@)。
【讨论】:
【参考方案2】:普通的Trigger
只响应依赖属性。
DataTrigger
可以由任何 .NET 属性触发(通过设置其Binding
属性)。但是,它的设置器仍然可以仅针对依赖项属性。
【讨论】:
如果这是唯一的区别,那么为什么要使用常规触发器? 当您绑定到视图中的属性时,Trigger
使用起来更方便。【参考方案3】:
另一个区别是DataTrigger
可以绑定到另一个控件、StaticResource 等。
<Style TargetType="TextBox">
<Style.Triggers>
<DataTrigger
Binding="Binding SomeProperty,
ElementName=someOtherControl"
Value="Derp">
<!-- etc -->
当使用Trigger
时,您只能检查设置样式的实例。例如,应用于 Button 的 Trigger
可以检查 IsPressed
的值,但如果您愿意,它将无法检查(例如)TextBox
在同一表单上的 Text
值如果TextBox
为空,则禁用Button
。
【讨论】:
以上是关于触发器和数据触发器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章