C# 不同的;“当选”;TreeView上每个节点的颜色

C# 不同的;“当选”;TreeView上每个节点的颜色,c#,wpf,treeview,treeviewitem,C#,Wpf,Treeview,Treeviewitem,我有一个TreeView,它在一个层次结构中呈现几种不同的数据类型。我在我的UserControl.Resources中定义了多个hierarchycaldatatemplate,我使用它根据每个节点的数据类型改变其外观: <UserControl.Resources> <HierarchicalDataTemplate DataType="{x:Type local:MyFirstType}" ItemsSource="{Binding Children}">

我有一个
TreeView
,它在一个层次结构中呈现几种不同的数据类型。我在我的
UserControl.Resources
中定义了多个
hierarchycaldatatemplate
,我使用它根据每个节点的数据类型改变其外观:

<UserControl.Resources>
    <HierarchicalDataTemplate DataType="{x:Type local:MyFirstType}" ItemsSource="{Binding Children}">
        ....
    </HierarchicalDataTemplate>

    <HierarchicalDataTemplate DataType="{x:Type local:MySecondType}" ItemsSource="{Binding Children}">
        ....
    </HierarchicalDataTemplate>

    .... etc ....

</UserControl.Resources>

....
....
.... 等

我希望每种类型的节点都有不同的悬停和选定的颜色。然而,我发现的所有关于更改这些颜色()的示例都涉及到更改一些系统定义的资源,例如
HighlightBrushKey
。由于我无法访问由我的
TreeView
生成的
TreeView项目
,如何在每个项目的基础上覆盖这些资源值?

我通过设置您提到的
SystemColors
,使
SelectedItem Background透明,然后在
Border
元素中声明我的项目,这样我就可以分别设置它们的
Background
颜色来实现这一点使用
数据触发器
相对资源绑定

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />


感谢您的回复。这是我的备份选项,以防我无法更改系统颜色;到目前为止,这似乎是唯一可行的解决方案。
<HierarchicalDataTemplate DataType="{x:Type local:MyFirstType}" 
    ItemsSource="{Binding Children}">
    <Border>
        <Border.Style>
            <Style TargetType="{x:Type Border}">
                <Setter Property="Background" Value="AliceBlue" />
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsSelected, RelativeSource={
                        RelativeSource AncestorType={x:Type TreeViewItem}}}" 
                        Value="True">
                        <Setter Property="Background" Value="LightGreen" />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Border.Style>
    </Border>
    <!-- Your content here -->
</HierarchicalDataTemplate>