【问题标题】:What's the difference between a Trigger and a DataTrigger?触发器和数据触发器有什么区别?
【发布时间】:2011-09-23 20:32:20
【问题描述】:

它们看起来一样。有显着差异吗?我想我错过了什么。

【问题讨论】:

标签: wpf triggers datatrigger


【解决方案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

    【讨论】:

      猜你喜欢
      • 2021-01-15
      • 2020-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      相关资源
      最近更新 更多