2009-10-28 74 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