触发器和数据触发器有啥区别?

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

【讨论】:

以上是关于触发器和数据触发器有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

触发器before和after有啥区别?

TeamCity 中的快照依赖和完成构建触发器有啥区别?

内联 SQL 查询和实体框架触发的查询有啥区别?

键盘的按下事件和change事件有啥区别?

mysql和db2有啥区别

javascript 中 click 和onclick有啥区别呢