2010-02-11 14 views
12

Comment définir un DataTrigger pour un StackPanel? Il a une propriété Trigger, mais la définition d'un déclencheur donne ici l'erreur suivante sur Initialiser lors du démarrage de l'application:Définition de DataTrigger pour StackPanel

initialisation d'objet Échec (ISupportInitialize.EndInit). Les membres de la collection Triggers doivent être de type EventTrigger. ....

Ceci est donné de la DataTrigger simple:

<StackPanel x:Name="PersonPanel" DataContext="{Binding CurrentPerson}"> 
    <TextBlock Text="{Binding Id}" /> 
    <TextBlock Text="{Binding Name}" /> 
    <StackPanel.Triggers> 
     <DataTrigger Binding="{Binding Id}" Value="1"> 
      <Setter TargetName="PersonPanel" Property="StackPanel.Background" Value="Green" /> 
     </DataTrigger>     
    </StackPanel.Triggers> 
</StackPanel> 

Ceci est mon premier Trigger jamais, alors qu'est-ce que je fais mal? Devrais-je définir le Trigger ailleurs?

Répondre

11

Essayez quelque chose comme ça

<Window.Resources> 
     <Style x:Key="spStyle" TargetType="StackPanel"> 
      <Setter Property="StackPanel.Background" Value="Red" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Id}" Value="1"> 
        <Setter Property="StackPanel.Background" Value="Green" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Window.Resources> 
    <StackPanel x:Name="PersonPanel" Style="{StaticResource spStyle}" DataContext="{Binding CurrentPerson}"> 
     <TextBlock Text="{Binding Id}" /> 
     <TextBlock Text="{Binding Name}" /> 
    </StackPanel> 
+0

Thx! Fonctionne parfaitement :-) – stiank81

7

essayez ceci:

<TextBlock Text="{Binding Id}"> 
    <TextBlock.Style> 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="TextBlock.Text" Value="1"> 
        <Setter TargetName="PersonPanel" Property="StackPanel.Background" Value="Green" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </TextBlock.Style> 
</TextBlock> 
+1

Thx! Cela fonctionne, mais je suis allé avec la solution de Faisal .. – stiank81

+0

De rien. –