J辉的博客

唯有今日积跬步方能量极质变,薄发于未来。

试一下treeview接收什么样的数据类型

界面就一个treeview

<Window x:Class="treeDemo01.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" WindowStartupLocation="CenterScreen">
    <Grid>
        <TreeView x:Name="tr_1">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding }">
                    <TextBlock Text="{Binding Name}"/>
                    </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
      </TreeView>
    </Grid>
</Window>

发现这个ItemsSource=”{Binding }”写不写都一样,不知道为什么。
然后建立一个Book.cs类

    public class Book {

        public string  Name { get; set; }

    }
然后我先主窗口这样写,先不利用Book 类
 List<string> Book;
    public MainWindow()
    {
        InitializeComponent();
        Book = new List<string>();
       Book.Add("你好");
        tr_1.ItemsSource = Book;
 }
很奇怪,出来的是一个空目录,至少能出来一个目录,说明treeview是接收list类型的,也就是集合吧。因为 List<string>里面没有Name属性,所以TextBlock 是出来了,但是没有值。在继续改
 List<Book> Book;
    public MainWindow()
    {
        InitializeComponent();
         Book = new List<Book>();
         Book  bk = new Book();
         bk.Name = "你好";
         Book.Add(bk);
        tr_1.ItemsSource = Book;

    }
我这里就建立10数据吧,一会测试下子层是怎么样联系的。
    List<Book> Book;
    public MainWindow()
    {
        InitializeComponent();
        Book = new List<Book>();
  for (int i = 0; i < 10;i++ )
        {
 Book.Add(new Book() { Name ="第" + i + "个父节点"});
        }
 tr_1.ItemsSource = Book;
}

这里写图片描述
当然这样是远远不够的,因为子层还没有。所以要对Book这个类进行改造了。在Book类下在嵌套一个List。有点搞脑子啊。

 public class Book {

  public string  Name { get; set; }
  public List<Book> Children { get; set; }
 public Book(){
       Children=new List<Book>();
       }
    }

然后主界面进行修改

 public MainWindow()
        {
            InitializeComponent();
            Book = new List<Book>();

  for (int i = 0; i < 10;i++ )
            {
                Book bk = new Book();
                bk.Name = "第" + i + "个父节点";
                bk.Children.Add(new Book { Name="我是"+i});
                Book.Add(bk);
            }
 tr_1.ItemsSource = Book;
        }
    }

然后发现显示的还是和上面的一样。这个时候就想到了
bind绑定

<HierarchicalDataTemplate ItemsSource="{Binding }">

还是空着的,那么填什么呢Book还是Children。

<HierarchicalDataTemplate ItemsSource="{Binding Children }">

如要显示子节点就绑定最底层的对象,因为Name是从最底层的属性开始找,我是这么理解的。
这里写图片描述

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vipzjh/article/details/55197837
文章标签: wpf
个人分类: wpf
想对作者说点什么? 我来说一句

数据添加到TreeView

2013年05月26日 94KB 下载

没有更多推荐了,返回首页

不良信息举报

试一下treeview接收什么样的数据类型

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭