代码之家  ›  专栏  ›  技术社区  ›  David Brunelle

在WPF中构建TreeView

  •  0
  • David Brunelle  · 技术社区  · 15 年前

    我正试图在WPF中构建一个三级树视图。基本上,我有一个顶级项目列表,所有这些项目都有一个子项目。这些子项本身可能有也可能没有chid项。

    有人知道网上有教程吗?

    3 回复  |  直到 13 年前
        1
  •  4
  •   Thomas Levesque    15 年前

    最简单的方法是使用绑定和 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 DataType="{x:Type my:Item}"
                              ItemsSource="{Binding Items}">
        <TextBlock Text="{Binding Name}"/>
    </HierarchicalDataTemplate>
    

    现在你只需要把 ItemsSource TreeView 到顶级项集合,树节点将自动构造。如果需要添加(或删除)节点,只需向父集合添加项(或将其从父集合中删除)。

    对于本例,我使用了单个项类型,但是如果您有多个类型要显示在 树视图 您需要定义 层次结构数据模板 为每一个。对于叶节点(没有子节点的节点),可以只使用 DataTemplate

        2
  •  2
  •   Paul Williams    15 年前
        3
  •  0
  •   Tobias    13 年前

    也许你的问题有点晚了,但有人遇到了同样的问题。 我发现WPF的自由控制非常好: DW.WPFToolkit 有很好的文件……