2016-04-08 104 views
0

我正在尝试在wpf c#中构建树视图。我需要我的父级和子级需要使用不同的颜色,我需要为该树视图中的所有父级完成此操作。如果任何节点包含任何颜色也需要更改的子节点。更改树视图中的子节点项目颜色wpf

enter image description here 我需要taht两栖在相同的背景色蜘蛛和所有子项应包含另一个背景颜色。这个怎么做......?

到目前为止,我已经尝试

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

回答

0

如果树型视图应该有当它有子项,没有他们另一种颜色一种颜色,也可以设定一个触发这样

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

另一种方式是将TextBlocks包装到具有背景的边框中。这里可以为每种类型分别设置背景。

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

我设置Margin="4"边境,使所选项目的默认突出

+0

由于它的工作原理 – Arshad

+0

有没有什么方式来表明颜色整行..?现在它只填充文本。我需要它填充整行(treeview)宽度 – Arshad

+1

@dahsra,http://stackoverflow.com/questions/15826637/wpf-treeview-item-background-over-entire-row和其相关问题 – ASh

相关问题