2009-10-28 76 views
6

我有下面的XAML代码:DataTrigger不点火

<DockPanel> 
    <DockPanel> 
     <CheckBox IsChecked="{Binding Path=Test}" /> 
     <CheckBox IsChecked="{Binding Path=Test}" /> 
    </DockPanel> 
    <DockPanel DockPanel.Dock="Left" Width="10" Background="Blue"> 
     <DockPanel.Style> 
      <Style> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=Test}" Value="True"> 
         <Setter Property="DockPanel.Background" Value="Yellow" /> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </DockPanel.Style> 
    </DockPanel> 
</DockPanel> 

现在 - 2个复选框正确链接 - 检查人会去检查其他 - 但datatrigger在不触发的。

我在做什么错?

回答

18

这里的问题是Property Value Precedence

您目前正在将背景设置为直接在DockPanel上显示为蓝色。这个显式属性将覆盖触发器设置的任何值。

相反,您必须将原始“背景”设置为样式中的设置者。

<DockPanel DockPanel.Dock="Left" Width="10"> 
     <DockPanel.Style> 
      <Style> 
       <Setter 
         Property="DockPanel.Background" 
          Value="Blue" /> 
       <Style.Triggers>      
        <DataTrigger 
          Binding="{Binding Path=Test}" 
          Value="True">       
        <Setter 
         Property="DockPanel.Background" 
          Value="Yellow" />      
        </DataTrigger>    </Style.Triggers>   </Style>  </DockPanel.Style> </DockPanel></DockPanel> 
+0

谢谢! - 只有一点小小的疏忽让一切都不起作用总是很有趣。 – John 2009-10-28 15:03:44

+0

谢谢,我经历了10个SO线程,你有我需要的答案:)。 – 2009-12-21 00:27:57

+0

@Andrew Shepherd先生,您是传奇! – TuanDT 2017-09-07 00:42:04