gpt4 book ai didi

wpf - 如何在WPF中使用复选框开发TreeView?

转载 作者:行者123 更新时间:2023-12-04 16:18:24 25 4
gpt4 key购买 nike

我有一个要求,我需要将节点动态添加到TreeView中,并且需要将节点添加到CheckBox es中。如果选择了一个CheckBox,则还将选择childs。

主要是我想动态地将数据添加到TreeView中。

最佳答案

一旦您知道如何做,这将非常简单。

为树 View 项目数据创建一个 View 模型类(在这里我称之为CheckableItem)。它需要以下三件事:

  • 它必须实现INotifyPropertyChanged。
  • 它需要类型为ChildrenObservableCollection<CheckableItem>属性。
  • 它需要一个IsChecked类型的Visibility属性,该属性在其 setter 中引发PropertyChanged并遍历Children中的项目并设置其IsChecked属性。

  • 在此类中实现其他属性以将项目的数据公开(我的示例仅假设称为 Value)。或者,您可以只实现 Item类型的 object类,并在模板中使用 ContentPresenter,但我将为您解决这个问题。

    现在为您的类创建一个 HierarchicalDataTemplate,看起来像这样:
    <HierarchicalDataTemplate
    DataType="{x:Type local:CheckableItem}"
    ItemsSource="{Binding Children}">
    <StackPanel Orientation="Horizontal">
    <CheckBox IsChecked="{Binding IsChecked}"/>
    <TextBlock Text="{Binding Value}"/>
    </StackPanel>
    </HierarchicalDataTemplate>

    ...以及一个使用它的 TreeView(当然,我假设您已经填充了这些对象的集合):
    <TreeView ItemsSource="{Binding MyCollectionOfCheckableItems}"/>

    工作原理: TreeView使用 HierarchicalDataTemplateItemsSource中呈现每个项目。 HierarchicalDataTemplate是一个模板,用于创建 HeaderedItemsControl(在本例中为 TreeViewItem),使用其模板呈现标题,然后将其 ItemsSource用作控件项目的源-由于它们都是 CheckableItem,因此将其由 TreeViewItem转换成 HierarchicalDataTemplate。在那之后,它一直都是乌龟。

    This很好地概述了 TreeView在实际中如何工作,尽管正如我发现的大多数示例一样,它杂乱无章,难以理解基本原理的简单程度。如果您了解MVVM,则上一段内容是您需要了解的内容的90%。

    关于wpf - 如何在WPF中使用复选框开发TreeView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2251260/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com