在WPF中构建树视图

时间:2009-09-24 19:01:04

标签: wpf treeview

我正在尝试在WPF中构建三级树视图。基本上,我有一个顶级项目列表,所有项目都有一个子项目。这些儿童用品可能有也可能没有自己的chid物品。

任何人都知道网上提供的教程吗?

3 个答案:

答案 0 :(得分:4)

最简单的方法是使用绑定和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>

现在,您只需将ItemsSource的{​​{1}}绑定到顶级项目集合,即可自动构建树节点。如果您需要添加(或删除)节点,只需在父集合中添加项目(或从中删除)

对于此示例,我使用了单个项目类型,但如果您要在TreeView中显示多种类型,则需要为每个类型定义TreeView。对于叶节点(没有子节点的节点),您可以使用常规HierarchicalDataTemplate

答案 1 :(得分:2)

答案 2 :(得分:0)

对你的问题可能有点晚了,但遇到了同样问题的人。 我找到了一个非常好的WPF免费控制:DW.WPFToolkit 有良好的文档..