簡體   English   中英

在WPF TreeView中更改子節點項的顏色

[英]Change child node item color in WPF TreeView

我正在嘗試在wpf中構建TreeView。 我需要我的父母和孩子使用不同的顏色,並且需要對該TreeView中的所有父母執行此操作。 如果任何節點包含任何子節點,則還需要更改該顏色。

在此處輸入圖片說明

我需要AMPHIBIANS和SPIDERS具有相同的背景色,並且所有子項都應包含另一種背景色 這個怎么做...?

到目前為止,我已經嘗試過

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

如果TreeViewItem包含子項時應具有一種顏色,而沒有子項時應具有另一種顏色,則可以設置這樣的觸發器

<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"以啟用所選項目的默認突出顯示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM