【问题标题】:Build a treeview in WPF在 WPF 中构建树视图
【发布时间】:2011-08-04 19:26:52
【问题描述】:

我正在尝试在 WPF 中构建一个三层树视图。基本上,我有一个顶级项目列表,它们都有一个子项目。这些子项可能有也可能没有自己的子项。

谁知道网上的教程?

【问题讨论】:

    标签: wpf treeview


    【解决方案1】:

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

    【讨论】:

    • 如果你忽略了我没有声明 DataType 并且 Header 似乎不存在的事实,我可以让它与不止一种类型的不同对象一起工作。显示的日期具有相同的属性名称,因此可以正常工作。这可能不是最好的方法,但由于显示必须简单,我现在就这样做。
    • 我的代码确实有错误,Header 属性不存在...现在已修复
    【解决方案2】:

    【讨论】:

    • 我知道这已经 4 岁了,但值得一说……阿门。网络上的 WPF 教程非常复杂。我走得越远,我看到的越多,我认为编写教程的人中有一半并不真正知道他们在做什么。 WPF 中的事情不必那么复杂......
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      相关资源
      最近更新 更多