Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据级别的不同设置TreeView项目的样式_C#_.net_Wpf_Xaml_Treeview - Fatal编程技术网

C# 如何根据级别的不同设置TreeView项目的样式

C# 如何根据级别的不同设置TreeView项目的样式,c#,.net,wpf,xaml,treeview,C#,.net,Wpf,Xaml,Treeview,我有一个TreeView,这将是我已经为其创建样式的三个层次。当我将这三个级别与我的自定义样式硬编码在一起时,它会按预期工作。当我尝试绑定到TreeView时,级别没有正确呈现 硬编码树视图 <TreeView> <TreeViewItem Header="First Level" Style="{StaticResource TreeViewItemGroup}"> <TreeViewItem Header="Second Level (a

我有一个
TreeView
,这将是我已经为其创建样式的三个层次。当我将这三个级别与我的自定义样式硬编码在一起时,它会按预期工作。当我尝试绑定到TreeView时,级别没有正确呈现

硬编码树视图

<TreeView>
    <TreeViewItem Header="First Level" Style="{StaticResource TreeViewItemGroup}">
        <TreeViewItem Header="Second Level (a)" Style="{StaticResource TreeViewItemSubGroup}">
            <TreeViewItem Style="{StaticResource TreeViewItemItem}" />
            <TreeViewItem Style="{StaticResource TreeViewItemItem}" />
            <TreeViewItem Style="{StaticResource TreeViewItemItem}" />
        </TreeViewItem>
        <TreeViewItem Header="Second Level (b)" Style="{StaticResource TreeViewItemSubGroup}">
        </TreeViewItem>
    </TreeViewItem>
</TreeView>
带绑定的TreeView

<DataTemplate x:Key="MenuItemTemplate">
    <TreeViewItem Style="{StaticResource TreeViewItemItem}" />
</DataTemplate>

<HierarchicalDataTemplate x:Key="MenuSubGroupTemplate"
                          ItemsSource="{Binding MenuItems}"
                          ItemTemplate="{StaticResource MenuItemTemplate}">
    <TreeViewItem Header="{Binding Header}" Style="{StaticResource TreeViewItemSubGroup}" />
</HierarchicalDataTemplate>

<HierarchicalDataTemplate x:Key="MenuGroupTemplate"
                          ItemsSource="{Binding MenuSubGroups}"
                          ItemTemplate="{StaticResource MenuSubGroupTemplate}">
    <TreeViewItem Header="{Binding Header}" Style="{StaticResource TreeViewItemGroup}" />
</HierarchicalDataTemplate>
<TreeView Grid.Row="1" ItemsSource="{Binding MenuGroups}" ItemTemplate="{StaticResource MenuGroupTemplate}"/>

我必须将每个样式放入
HierarchycalDataTemplate
ItemContainerStyle
TreeView

<DataTemplate x:Key="MenuItemTemplate">
    <TreeViewItem Style="{StaticResource TreeViewItemItem}" />
</DataTemplate>

<HierarchicalDataTemplate x:Key="MenuSubGroupTemplate"
                          ItemsSource="{Binding MenuItems}"
                          ItemTemplate="{StaticResource MenuItemTemplate}">
    <TextBlock Text={Binding Header} />
    <HierarchicalDataTemplate.ItemContainerStyle>
        <Style><!-- 3rd STYLE HERE --></Style>
    </HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>

<HierarchicalDataTemplate x:Key="MenuGroupTemplate"
                          ItemsSource="{Binding MenuSubGroups}"
                          ItemTemplate="{StaticResource MenuSubGroupTemplate}">
    <TextBlock Text={Binding Header} />
    <HierarchicalDataTemplate.ItemContainerStyle>
        <Style><!-- 2nd STYLE HERE --></Style>
    </HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>

<TreeView ItemsSource="{Binding MenuGroups}" ItemTemplate="{StaticResource MenuGroupTemplate}">
    <TreeView.ItemContainerStyle>
        <Style><!-- 1st Level Style --></Style>
    </TreeView.ItemContainerStyle>
</TreeView>


是的,这是最好的方法。
<DataTemplate x:Key="MenuItemTemplate">
    <TreeViewItem Style="{StaticResource TreeViewItemItem}" />
</DataTemplate>

<HierarchicalDataTemplate x:Key="MenuSubGroupTemplate"
                          ItemsSource="{Binding MenuItems}"
                          ItemTemplate="{StaticResource MenuItemTemplate}">
    <TextBlock Text={Binding Header} />
    <HierarchicalDataTemplate.ItemContainerStyle>
        <Style><!-- 3rd STYLE HERE --></Style>
    </HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>

<HierarchicalDataTemplate x:Key="MenuGroupTemplate"
                          ItemsSource="{Binding MenuSubGroups}"
                          ItemTemplate="{StaticResource MenuSubGroupTemplate}">
    <TextBlock Text={Binding Header} />
    <HierarchicalDataTemplate.ItemContainerStyle>
        <Style><!-- 2nd STYLE HERE --></Style>
    </HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>

<TreeView ItemsSource="{Binding MenuGroups}" ItemTemplate="{StaticResource MenuGroupTemplate}">
    <TreeView.ItemContainerStyle>
        <Style><!-- 1st Level Style --></Style>
    </TreeView.ItemContainerStyle>
</TreeView>