Trigger和DataTrigger之间有什么区别?

时间:2011-06-27 21:24:13

标签: wpf triggers datatrigger

他们似乎是一样的。有显着差异吗?我想我错过了什么。

3 个答案:

答案 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)。