2016-04-08 14 views
0

Ich versuche, eine Treeview in WPF C# zu bauen. Ich brauche meine Eltern und Kind muss in verschiedenen Farben sein, und ich brauche das für alle Eltern in dieser Baumansicht getan werden. Wenn ein Knoten einen untergeordneten Knoten enthält, müssen die Farben ebenfalls geändert werden.Ändern Kindknoten Elementfarbe in Treeview WPF

enter image description here Ich brauche taht AMPHIBIANS und SPINNEN in gleichen Hintergrundfarbe und alle untergeordneten Elemente sollten enthält eine andere Hintergrundfarbe. Wie macht das das ...?

Bisher habe ich versucht haben

<Window.Resources> 
    <Style TargetType="{x:Type TreeViewItem}"> 
     <Setter Property="Background" Value="#4E4E4E"/> 
     <Setter Property="Foreground" Value="White"/> 
     <Setter Property="FontSize" Value="15"/> 
    </Style> 

    <Style x:Key="styTvMenu" TargetType="{x:Type TreeView}"> 
     <Setter Property="Foreground" Value="Green"/> 
    </Style> 
</Window.Resources> 
<Grid> 
    <TreeView ItemsSource="{x:Static local:MainWindow.AnimalCategories}" Style="{StaticResource styTvMenu}" Margin="0,0,321,0"> 
     <TreeView.ItemTemplate> 
      <HierarchicalDataTemplate ItemsSource="{Binding Path=Animals}"> 
       <HierarchicalDataTemplate.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding Path=Name}"/> 
        </DataTemplate> 
       </HierarchicalDataTemplate.ItemTemplate> 
       <TextBlock Text="{Binding Path=Category}" /> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 

    </TreeView> 
</Grid> 

Antwort

0

wenn TreeViewItem eine Farbe haben sollten, wenn sie Kind Gegenstände und eine andere Farbe, ohne sie hat, ist es möglich, einen Auslöser wie diese

<Style TargetType="{x:Type TreeViewItem}"> 
    <Setter Property="Background" Value="#4E4E4E"/> 
    <Style.Triggers> 
     <Trigger Property="HasItems" Value="False"> 
      <Setter Property="Background" Value="Aqua"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 

einstellen

eine andere Möglichkeit wäre, TextBlocks in Rahmen mit Hintergrund zu wickeln. Hier kann der Hintergrund für jeden Typ individuell eingestellt werden.

<DataTemplate> 
    <Border Background="Aqua" Margin="4"> 
      <TextBlock Text="{Binding Path=Name}"/> 
    </Border> 
</DataTemplate> 

Ich habe Margin="4" für Border Standard Highlight der ausgewählten Elemente

+0

Dank es – Arshad

+0

arbeitet, damit ist es eine Möglichkeit, dass die Farbe für die gesamte Zeile zu zeigen ..? Jetzt füllt es nur um den Text herum. Ich brauche es, um die gesamte Reihe (Baumansicht) Breite – Arshad

+1

@dahsra, http://stackoverflow.com/questions/15826637/wpf-treeview-item-background-over-entreirowrow und seine verknüpften Fragen – ASh