2009-10-28 14 views
6

を発射ません:今はDataTrigger、私は次のXAML持っ

<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

+0

ありがとう、私は10のスレッドを通過し、あなたは私が必要な答えを持っていた:)。 –

+0

@Andrew Shepherdあなたは、伝説です! – TuanDT

関連する問題