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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值