C# 将CollectionViewSource多级组绑定到嵌套的HierarchycalDataTemplate

C# 将CollectionViewSource多级组绑定到嵌套的HierarchycalDataTemplate,c#,wpf,treeview,collectionviewsource,C#,Wpf,Treeview,Collectionviewsource,只有第一级树节点可见,没有任何子节点,但my CollectionViewSource的组中至少有一个项。如何将子项的ItemSource绑定到每个组中的Items属性 <HierarchicalDataTemplate x:Key="myTemplate" > <!-- Level 1 --> <WrapPanel> <CheckBox IsChecked="True" Margin="2,2,2,2" ><

只有第一级树节点可见,没有任何子节点,但my CollectionViewSource的组中至少有一个项。如何将子项的ItemSource绑定到每个组中的Items属性

<HierarchicalDataTemplate x:Key="myTemplate" >
    <!-- Level 1 -->
    <WrapPanel>
        <CheckBox IsChecked="True" Margin="2,2,2,2" ></CheckBox>
        <TextBlock Text="{Binding Name}" Margin="2,2,2,2" ></TextBlock>
    </WrapPanel>
    <HierarchicalDataTemplate.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Items}">
            <!-- Level 2 -->
            <WrapPanel>
                <CheckBox IsChecked="True" Margin="2,2,2,2" ></CheckBox>
                <TextBlock Text="{Binding Name}" Margin="2,2,2,2" ></TextBlock>
            </WrapPanel>
            <DataTemplate>
                <WrapPanel>
                    <CheckBox IsChecked="{Binding IsChecked}" Margin="2,2,2,2" ></CheckBox>
                    <TextBlock Text="{Binding Name}" Margin="2,2,2,2" ></TextBlock>
                </WrapPanel>
            </DataTemplate>
        </HierarchicalDataTemplate>
    </HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>

<TreeView x:Name="TreeViewClaims" Grid.Row="1" Grid.Column="0" Margin="2,2,2,2" BorderThickness="0"
    ItemsSource="{Binding GroupByView.View.Groups}" 
    ItemTemplate="{StaticResource myTemplate}">
</TreeView>

如果所有项目都以相同的方式显示,则只需指定一个HierachicalDataTemplate并设置ItemsSource(存储子项的属性)



如果希望每个级别有不同的视图,可以为每个级别实现不同的viewmodel,并在HierachicalDataTemplate中使用TargetType属性。模板将自动应用于渲染viewmodel。但是你不能像在第一篇文章中那样使用层次数据模板

我希望默认情况下选中除终端子节点之外的所有节点的复选框,对于终端子节点,它将由绑定属性决定。这就是为什么我必须为每个级别显式定义模板的原因。
<HierarchicalDataTemplate x:Key="myTemplate"
                          ItemssSource="{Binding Items}"
                          TargetType="{x:Type FirstLevelViewModel}">
<WrapPanel>
    <CheckBox IsChecked="True" Margin="2,2,2,2" ></CheckBox>
    <TextBlock Text="{Binding Name}" Margin="2,2,2,2" ></TextBlock>
</WrapPanel>
</HierarchicalDataTemplate>