2009-03-07 4 views
0

Ich habe eine Baumansicht mit Xml-Daten, wobei jedes Element in eine Klasse eingewickelt ist, die IsExpanded, den Namen und Wert des umschlossenen XElements und einen booleschen MatchesFilter enthält, der gesetzt wird, wenn das Element einem bestimmten Filter entspricht; Ich möchte die Vordergrundfarbe ändern, wenn MatchesFilter wahr ist.Bedingte Bindung Vordergrund an einen booleschen Wert

Was ich zur Zeit habe, ist:

<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock Width="110" Foreground="Blue" Text="{Binding Name}" /> 
      <TextBlock Foreground="{Binding Foreground}" Text="{Binding Value}" /> 
     </StackPanel> 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate> 

wo die Vordergrundfarbe in der Code-Behind gesetzt wird, was ganz gut funktioniert, aber kaum im Geist des WPF! Wie mache ich das richtig?

Edit: Danke, genau so, jetzt weiß ich, welches Kapitel zu lesen ist.

Antwort

1

So ähnlich?

<TextBlock Name="tbkValue" Text="{Binding Value}"/> 

...

<HierarchialDataTemplate.Triggers> 
    <DataTrigger Binding="{Binding Path=MatchesFilter}" Value="True"> 
     <Setter TargetName="tbkValue" Property="Foreground" Value="Red"/> 
    </DataTrigger> 
</HierarchialDataTemplate.Triggers> 

Sie können auch den Auslöser als eine Ressource erstellen und zwischen verschiedenen Vorlagen teilen.