如何包含特定 TreeView 节点的复选框?

Posted

技术标签:

【中文标题】如何包含特定 TreeView 节点的复选框?【英文标题】:How To Include Checkboxes for Specific TreeView Nodes? 【发布时间】:2020-09-02 10:04:03 【问题描述】:

我正在尝试创建如下所示的父树节点和子树节点,但希望仅针对 (CheckBox) 指示的节点显示 CheckBox。如果我将 TreeView 控件的 CheckBoxes 属性设置为 true,它将显示所有 TreeView 节点的 CheckBoxes。

-> Parent Node 1 (No Checkbox)
----> Child Node of Parent 1 (No Checkbox)
--------> Subnode 1 of Child Node of Parent 1 (Checkbox)
--------> Subnode 2 of Child Node of Parent 1 (Checkbox)
--------> Subnode 3 of Child Node of Parent 1 (Checkbox)
--------> Subnode 4 of Child Node of Parent 1 (Checkbox)
--------> Subnode 5 of Child Node of Parent 1 (Checkbox)

-> Parent Node 2 (No Checkbox)
----> Child Node of Parent 2 (No Checkbox)
--------> Subnode 1 of Child Node of Parent 2 (Checkbox)
--------> Subnode 2 of Child Node of Parent 2 (Checkbox)
--------> Subnode 3 of Child Node of Parent 2 (Checkbox)
--------> Subnode 4 of Child Node of Parent 2 (Checkbox)
--------> Subnode 5 of Child Node of Parent 2 (Checkbox)

【问题讨论】:

哪个 TreeView 控件(Windows 窗体和 WPF 都有一个名为 TreeView 的控件 - 可能还有其他控件)。您的规则是“仅叶节点上的复选框” Windows 窗体。不确定叶节点是什么,但可能答案是肯定的。 您应该使用 Windows 窗体标记您的问题。下面答案中的 XAML(关于 HierarchicalDataTemplate)是关于 WPF 的。一棵树有树枝。每个分支可以有其他分支或叶子。但是一片叶子不能有任何分支。叶节点没有子节点 【参考方案1】:

您可以使用HierarchicalDataTemplate 标签为TreeView 的每个级别创建自定义数据模板。

<TreeView ItemsSource="Binding Parents">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="x:Type namespace:Parent" ItemsSource="Binding Children">
            <TextBlock Text="Binding Name"/>
            <HierarchicalDataTemplate.ItemTemplate>
                <HierarchicalDataTemplate DataType="x:Type namespace:child" ItemsSource="Binding subnodes">
                    <TextBlock Text="Binding name" />
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <CheckBox />
                                <TextBlock Text="Binding Name" />
                            </StackPanel>
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

【讨论】:

以上是关于如何包含特定 TreeView 节点的复选框?的主要内容,如果未能解决你的问题,请参考以下文章

C# windowform下的 treeview ,两层结构,需要子节点显示复选框,父节点不显示复选框

根据TreeView结构中的哪个节点调用特定的UserControl

bootstrap-treeview 点击复选框事件怎么做?

如何在C#Winform窗体的Treeview上面添加CheckBox复选框

怎么响应TreeView中的OnTreeNodeCheckChanged事件

如何使用wpf中的复选框开发树视图?