C# WPF TreeView-基于枚举值应用样式

C# WPF TreeView-基于枚举值应用样式,c#,wpf,enums,treeview,C#,Wpf,Enums,Treeview,我有一个TreeView绑定到包含enum值的observeCollection: public enum Categories { CatA, CatB, CatC, CatD } public ObservableCollection<Categories> CategoriesList = new ObservableCollection<Categories>(); foreach (Categories cat in (Categories[])En

我有一个
TreeView
绑定到包含
enum
值的
observeCollection

public enum Categories
{
    CatA, CatB, CatC, CatD
}

public ObservableCollection<Categories> CategoriesList = new ObservableCollection<Categories>();

foreach (Categories cat in (Categories[])Enum.GetValues(typeof(Categories)))
{
    CategoriesList.Add(cat);
}
XAML标记的名称:

<TreeView x:Name="tvCat">
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <Style.Triggers>
                 <Trigger Property="IsSelected" Value="True">
                     <Setter Property="FontWeight" Value="Bold"/>
                 </Trigger>
            </Style.Triggers>
        </Style>
    </TreeView.ItemContainerStyle>
</TreeView>

我正在试图找出如何为每个枚举值对
treevieItem
应用单独的样式设置,例如
CatA
的蓝色,CatB的红色,可能是
CatC
的图标等


非常感谢您的帮助。

您可以使用
DataTrigger
s获得所需的输出

<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="FontWeight" Value="Bold"/>
            </Trigger>
            <DataTrigger Binding="{Binding}" Value="CatA">
                <Setter Property="Foreground" Value="Blue" />
            </DataTrigger>
            <DataTrigger Binding="{Binding}" Value="CatB">
                <Setter Property="Foreground" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TreeView.ItemContainerStyle>

请检查:您是否尝试使用DataTriggers?@Suresh我不确定如何使用
DataTriggers
将特定的
enum
值作为目标。大多数示例显示如何使用
类的
属性
<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="FontWeight" Value="Bold"/>
            </Trigger>
            <DataTrigger Binding="{Binding}" Value="CatA">
                <Setter Property="Foreground" Value="Blue" />
            </DataTrigger>
            <DataTrigger Binding="{Binding}" Value="CatB">
                <Setter Property="Foreground" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
    <ControlTemplate TargetType="TreeViewItem" x:Key="CatCTemplate">
        <Image Source="icon.jpeg" Height="64" Width="64" />
    </ControlTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
    <Style TargetType="{x:Type TreeViewItem}">
        <Style.Triggers>
            <Trigger Property="IsSelected" Value="True">
                <Setter Property="FontWeight" Value="Bold"/>
            </Trigger>
            <DataTrigger Binding="{Binding}" Value="CatA">
                <Setter Property="Foreground" Value="Blue" />
            </DataTrigger>
            <DataTrigger Binding="{Binding}" Value="CatB">
                <Setter Property="Foreground" Value="Red" />
            </DataTrigger>
            <DataTrigger Binding="{Binding}" Value="CatC">
                <Setter Property="Template" Value="{StaticResource CatCTemplate}" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TreeView.ItemContainerStyle>