2009-10-28 18 views
6

tengo el siguiente XAML:DataTrigger no disparar

<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> 

ahora - las 2 casillas de verificación enlazar adecuadamente - marcando una comprobará el otro - pero el DataTrigger no está disparando en absoluto.

¿Qué estoy haciendo mal?

Respuesta

18

El problema aquí es Property Value Precedence.

Actualmente está configurando el Fondo en azul directamente en el DockPanel. Esta propiedad explícita anulará cualquier valor establecido por el desencadenador.

En su lugar, debe establecer el "Fondo" original como un colocador en el estilo.

<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

¡Gracias! - Siempre es gracioso solo un pequeño descuido que hace que todo no funcione. – John

+0

Gracias, pasé por 10 hilos SO y tuviste la respuesta que necesitaba :). –

+0

@ Andrew Shepherd ¡Usted, señor, es una leyenda! – TuanDT

Cuestiones relacionadas