Trigger和DataTrigger之间有什么区别?

Jer*_*xon 45 wpf triggers datatrigger

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

Sea*_*n U 45

常规触发器仅响应依赖项属性.

任何.NET属性都可以触发数据触发器(通过设置其Binding属性).但是,它的setter仍然只能定位依赖项属性.

  • 如果这是唯一的区别,那么为什么会使用常规触发器呢? (7认同)
  • @SeanU 为什么,什么更方便? (2认同)

小智 27

另一个区别是a DataTrigger可以绑定到另一个控件,StaticResource等等.

<Style TargetType="TextBox">
  <Style.Triggers>
    <DataTrigger 
      Binding="{Binding SomeProperty, 
                        ElementName=someOtherControl" 
      Value="Derp">
      <!-- etc -->
Run Code Online (Sandbox Code Playgroud)

您只能在使用时检查设置样式的实例Trigger.例如,Trigger应用于Button可以检查其值IsPressed,但如果您希望禁用if 为空,则无法检查同一表单上的(例如)Text值. TextBoxButtonTextBox


Ric*_*dOD 17

简短的回答(因为我即将入睡) - 触发器可以处理依赖项属性(通常是GUI属性),而数据触发器可以由任何.NET属性(通常是实现INotifyPropertyChanged的ViewModel中的属性)触发.