2010-02-11 6 views
12

Come si definisce un DataTrigger per un StackPanel? Esso ha una proprietà Trigger, ma la definizione di un trigger qui dà il seguente errore di inizializzazione all'avvio dell'applicazione:Definizione di DataTrigger per StackPanel

inizializzazione dell'oggetto non riuscita (ISupportInitialize.EndInit). I membri della raccolta Trigger devono essere di tipo EventTrigger. ....

Questo è dato dalla seguente semplice DataTrigger:

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

Questo è il mio primo Trigger mai, quindi che cosa ho fatto di sbagliato? Devo definire lo Trigger altrove?

risposta

11

provare qualcosa di simile

<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! Funziona perfettamente :-) – stiank81

7

provare questo:

<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! Funziona, ma sono andato con la soluzione di Faisal .. – stiank81

+0

Prego. –