【问题标题】:Binding CollectionViewSource multilevel groups to nested HierarchicalDataTemplate将 CollectionViewSource 多级组绑定到嵌套的 HierarchicalDataTemplate
【发布时间】:2014-03-20 07:56:29
【问题描述】:

只有第一级树节点可见,没有任何子节点,但我的 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>

【问题讨论】:

    标签: c# wpf treeview collectionviewsource


    【解决方案1】:

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

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

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

    【讨论】:

    • 我希望默认选中除终端子节点之外的所有节点的复选框,对于终端子节点,它将由绑定属性决定。这就是为什么我必须为每个级别明确定义模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2014-09-27
    • 2017-01-23
    • 2019-10-02
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    相关资源
    最近更新 更多