2009-10-28 15 views
6

je le XAML suivant:DataTrigger pas de tir

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

maintenant - les 2 cases lien correctement - vérifier un vérifieront l'autre - mais le DataTrigger ne se déclenche pas du tout.

Qu'est-ce que je fais mal?

Répondre

18

Le problème ici est Property Value Precedence.

Vous définissez actuellement l'arrière-plan en bleu directement sur le DockPanel. Cette propriété explicite remplacera toute valeur définie par le déclencheur.

Au lieu de cela, vous devez définir l'arrière-plan d'origine en tant que setter dans le style.

<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

Merci! - C'est toujours drôle juste un petit oubli qui fait que tout ne fonctionne pas. – John

+0

Merci, je suis passé par 10 fils SO et vous avez eu la réponse dont j'avais besoin :). –

+0

@Andrew Shepherd Vous, monsieur, êtes une légende! – TuanDT