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

原创 2017年02月15日 15:17:59

界面就一个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是从最底层的属性开始找,我是这么理解的。
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

json数据转化为bootstrap treeview填充数据格式util

后台响应的数据: [ { "menuGroupName":"应用管理", "menu": [ { "menuName": "文件列表", "function"...

重新梳理一下C语言基本数据类型

今天主要梳理一下关于参与C语言的基本数据类型。       首先是常用的单位介绍:位、字节和字。位是最小的存储单位,它可以容纳2个值,0或1。1个字节均为8位。对于8位微机,一个字8位,对于16位机...

试一下这个博客

/* Java Bublle Sort Descending Order Example This Java bublle sort example shows how to sort an ar...
  • hll1987
  • hll1987
  • 2013年08月25日 10:02
  • 466

04 试一下,编写第一个JAVA程序

部署好java环境,我们就可以编写java程序去运行了。下面编写一个很简答的JAVA程序试一下...

第2章 数据类型与表达式

  • 2015年12月06日 22:13
  • 503KB
  • 下载

刚刚提取了金山毒霸的[垃圾清理] 和 [隐私清理], 分享方法,大家可以自己试一下

刚刚提取了金山毒霸的[垃圾清理] 和 [隐私清理], 分享方法,大家可以自己试一下...

第10章 复杂数据类型.ppt

  • 2015年08月09日 15:11
  • 937KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:试一下treeview接收什么样的数据类型
举报原因:
原因补充:

(最多只允许输入30个字)