当前位置:   article > 正文

WPF —— TreeView树形控件_wpf treeview

wpf treeview

1 TreeView简介

 TreeView 表示一个控件,该控件在树结构(其中的项可以展开和折叠)中显示分层数据。 

    TreeView 是一个 ItemsControl,这意味着它可以包含任何类型的对象的集合 (,例如字符串、图像或面板) 。

2 Tree View常用的属性

        meun 水平菜单
        contextMenu 内容菜单
        TreeView 树形菜单,

        SelectedItemChanged 当选择子项发生改变的时候触发

        TreeViewItem 子项

3关于Tree View的实例 使用动态绑定数据

  1. <StackPanel>
  2. <TreeView Name="t1" SelectedItemChanged="t1_SelectedItemChanged">
  3. <!--静态数据绑定 TreeViewItem 子项-->
  4. <TreeViewItem Header="实验小学">
  5. <TreeViewItem Header="一年级"></TreeViewItem>
  6. <TreeViewItem Header="二年级"></TreeViewItem>
  7. <TreeViewItem Header="三年级"></TreeViewItem>
  8. <TreeViewItem Header="四年级"></TreeViewItem>
  9. </TreeViewItem>
  10. <TreeViewItem Header="外国语小学">
  11. <TreeViewItem Header="炼器基础篇"></TreeViewItem>
  12. <TreeViewItem Header="筑基篇"></TreeViewItem>
  13. <TreeViewItem Header="结丹凝丹篇"></TreeViewItem>
  14. <TreeViewItem Header="元婴化婴篇"></TreeViewItem>
  15. </TreeViewItem>
  16. <TreeViewItem Header="裕禄小学">
  17. </TreeViewItem>
  18. <!--动态绑定数据:
  19. 单个对象绑定例如textblock label textbox等
  20. 绑定list集合 listbox、combobox、各种菜单、datagrid德国可以绑定属性一般都是: itemsoure
  21. -->
  22. <TreeView ItemsSource="{Binding }" Name="t2">
  23. <!--子项绑定是其中一个对象的属性-->
  24. <TreeView.ItemTemplate>
  25. <!--树形数据的模板 ItemsSource 子级菜单对象的集合-->
  26. <HierarchicalDataTemplate ItemsSource="{Binding SubMenus}">
  27. <!--绑定子集标题-->
  28. <TextBlock Text="{Binding Name}">
  29. </TextBlock>
  30. </HierarchicalDataTemplate>
  31. </TreeView.ItemTemplate>
  32. </TreeView>
  33. </TreeView>
  34. </StackPanel>

模型类的两种方法

一:

  1. MenuInfo m1 = new MenuInfo()
  2. {
  3. Name = "实验小学",
  4. // 存放子集标题对象
  5. SubMenus = new List<MenuInfo>()
  6. {
  7. new MenuInfo() {
  8. Name= "一年级",
  9. SubMenus= new List<MenuInfo>()
  10. {
  11. new MenuInfo() {Name = "语文"},
  12. new MenuInfo() {Name = "数学"},
  13. new MenuInfo() {Name = "体育"},
  14. new MenuInfo() {Name = "英语"},
  15. }
  16. },
  17. new MenuInfo() { Name="二年级"},
  18. new MenuInfo() { Name="三年级"},
  19. new MenuInfo() { Name="四年级"},
  20. new MenuInfo() { Name="五年级"},
  21. }
  22. };
  23. MenuInfo m2 = new MenuInfo()
  24. {
  25. Name = "特殊学校",
  26. SubMenus = new List<MenuInfo>()
  27. {
  28. new MenuInfo(){Name = "一年班"},
  29. new MenuInfo(){Name = "二年班"},
  30. }
  31. };
  32. List<MenuInfo> list = new List<MenuInfo>();
  33. list.Add(m1);
  34. list.Add(m2);
  35. this.t2.ItemsSource = list;
  36. public class MenuInfo
  37. {
  38. public string Name { get; set; }
  39. public List<MenuInfo> SubMenus { get; set; } // 子集菜单的集合
  40. public MenuInfo(string n, MenuInfo m1)
  41. {
  42. Name = n;
  43. if(m1 != null)
  44. {
  45. // 如果父级对象的subMenus 为null 则新建,如果不为空 则添加
  46. if (m1.SubMenus is null) m1.SubMenus = new List<MenuInfo>();
  47. m1.SubMenus.Add(this);
  48. }
  49. }
  50. public MenuInfo()
  51. {
  52. }
  53. }

二:

 

  1. // 标题对象
  2. MenuInfo gaibang = new MenuInfo("丐帮",null);
  3. // 二级菜单
  4. MenuInfo qiaofeng = new MenuInfo("乔峰", gaibang);
  5. MenuInfo zhuangjuxian = new MenuInfo("庄聚贤", gaibang);
  6. MenuInfo wuzhuanglao = new MenuInfo("五长老",gaibang);
  7. // 三级菜单
  8. MenuInfo xifu1 = new MenuInfo("阿紫", qiaofeng);
  9. MenuInfo xifu2 = new MenuInfo("阿紫她姐", qiaofeng);
  10. List<MenuInfo> list = new List<MenuInfo>();
  11. list.Add(gaibang);
  12. this.t2.ItemsSource = list;
  13. }
  14. private void t1_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
  15. {
  16. MessageBox.Show((t1.SelectedItem as TreeViewItem).Header.ToString());
  17. }
  18. }
  19. public class MenuInfo
  20. {
  21. public string Name { get; set; }
  22. public List<MenuInfo> SubMenus { get; set; } // 子集菜单的集合
  23. public MenuInfo(string n, MenuInfo m1)
  24. {
  25. Name = n;
  26. if(m1 != null)
  27. {
  28. // 如果父级对象的subMenus 为null 则新建,如果不为空 则添加
  29. if (m1.SubMenus is null) m1.SubMenus = new List<MenuInfo>();
  30. m1.SubMenus.Add(this);
  31. }
  32. }
  33. public MenuInfo()
  34. {
  35. }
  36. }

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号