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

+0

고마워, 나는 10 개의 SO 스레드를 겪었고, 내가 필요한 대답을했다. :) –

+0

@Andrew Shepherd 선생님, 전설입니다! – TuanDT

관련 문제