在WPF中生成树视图

ippsafx7  于 2023-03-19  发布在  其他
关注(0)|答案(3)|浏览(126)

我试图在WPF中建立一个三级树视图。基本上,我有一个顶级项目列表,这些项目都有一个以上的子项目。这些子项目可能有也可能没有自己的chid项目。
有人知道网上有教程吗?

q5iwbnjs

q5iwbnjs1#

最简单的方法是使用bindings和HierarchicalDataTemplate,用你的数据声明一个类:

class Item : INotifyPropertyChanged
{
    public Item()
    {
        this.Children = new ObservableCollection<Item>();
    }

    public event PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }

    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            OnPropertyChanged("Name");
        }
    }

    public ObservableCollection<Item> Children { get; private set; }
}

并为该类型定义一个HierarchicalDataTemplate

<HierarchicalDataTemplate DataType="{x:Type my:Item}"
                          ItemsSource="{Binding Items}">
    <TextBlock Text="{Binding Name}"/>
</HierarchicalDataTemplate>

现在只需要将TreeViewItemsSource绑定到顶层项的集合,树节点将自动构造,如果需要添加(或删除)节点,只需将项添加到父集合(或从父集合中删除
对于本例,我使用了单个项目类型,但是如果您有多个类型要在TreeView中显示,则需要为每个类型定义一个HierarchicalDataTemplate,对于叶节点(没有子节点的节点),可以只使用常规的DataTemplate

djp7away

djp7away3#

也许有点晚了你的问题,但有人谁是运行到同样的问题。我发现了一个非常好的免费控制WPF:DW.WPFToolkit具有良好的文档。

相关问题