1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > WPF控件TreeView应用示例

WPF控件TreeView应用示例

时间:2023-09-30 06:12:59

相关推荐

WPF控件TreeView应用示例

1、基本应用

内容固定,在xaml中直接显示。

(1)、MainWindow.xaml代码

<TreeView><TreeViewItem Header="水果第一级"><TreeViewItem Header="水果第二级"><TreeViewItem Header="水果第三级"/></TreeViewItem></TreeViewItem><TreeViewItem Header="蔬菜第一级"/><TreeViewItem Header="肉类第一级"/></TreeView>

(2)、运行效果

2、同种类型数据动态加载

(1)、目录架构

(2)、TreeViewModel.cs

internal class TreeViewModel{public string Name {get; set; }public ObservableCollection<TreeViewModel> Children {get; set; } = new ObservableCollection<TreeViewModel>();}

(3)、TreeViewViewModel.cs

internal class TreeViewViewModel{private TreeViewModel treeViewModelRoot = new TreeViewModel();public TreeViewModel TreeViewModelRoot{get {return treeViewModelRoot; }set {treeViewModelRoot = value; }}public TreeViewViewModel(){InitTree();}private void InitTree(){for(int i = 0; i < 5; i++){TreeViewModel treeViewModel = new TreeViewModel();treeViewModel.Name = $"第{i+1}级";for(int j = 0; j < 5; j++){TreeViewModel treeViewModel1 = new TreeViewModel();treeViewModel1.Name = $"第{i + 1}-----{j + 1}级";treeViewModel.Children.Add(treeViewModel1);}TreeViewModelRoot.Children.Add(treeViewModel);}}}

(4)、MainWindow.xaml

<Window x:Class="WpfTreeViewApp.MainWindow"xmlns="/winfx//xaml/presentation"xmlns:x="/winfx//xaml"xmlns:d="/expression/blend/"xmlns:mc="/markup-compatibility/"xmlns:local="clr-namespace:WpfTreeViewApp"xmlns:viewModels="clr-namespace:WpfTreeViewApp.ViewModels"mc:Ignorable="d"Title="MainWindow" Height="450" Width="800"><Window.DataContext><viewModels:TreeViewViewModel x:Name="viewModel"/></Window.DataContext><TreeView ItemsSource="{Binding TreeViewModelRoot.Children}"><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding Children}"><TextBlock Text="{Binding Name}"/></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView></Window>

(5)、运行效果

3、不同类型数据动态加载

文件目录架构不变。

(1)、TreeViewModel.cs

internal class TreeViewModel{public ObservableCollection<TreeViewModel1> ChildrenModel1 {get; set; } = new ObservableCollection<TreeViewModel1>();}internal class TreeViewModel1{public string Name {get; set; }public ObservableCollection<TreeViewModel2> ChildrenModel2 {get; set; } = new ObservableCollection<TreeViewModel2>();}internal class TreeViewModel2{public string ID {get; set; }public ObservableCollection<TreeViewModel3> ChildrenModel3 {get; set; } = new ObservableCollection<TreeViewModel3>();}internal class TreeViewModel3{public string Description {get; set; }}

(2)、TreeViewViewModel.cs

internal class TreeViewViewModel{private TreeViewModel treeViewModelRoot = new TreeViewModel();public TreeViewModel TreeViewModelRoot{get {return treeViewModelRoot; }set {treeViewModelRoot = value; }}public TreeViewViewModel(){InitTree();}private void InitTree(){for(int i = 0; i < 5; i++){TreeViewModel1 treeViewModel1 = new TreeViewModel1();treeViewModel1.Name = $"Name第{i+1}级";for(int j = 0; j < 5; j++){TreeViewModel2 treeViewModel2 = new TreeViewModel2();treeViewModel2.ID = $"ID第{i + 1}-----{j + 1}级";for(int k = 0; k < 5; k++){TreeViewModel3 treeViewModel3 = new TreeViewModel3();treeViewModel3.Description = $"Description第{i + 1}--{j + 1}--{k + 1}";treeViewModel2.ChildrenModel3.Add(treeViewModel3);}treeViewModel1.ChildrenModel2.Add(treeViewModel2);}TreeViewModelRoot.ChildrenModel1.Add(treeViewModel1);}}}

(3)、MainWindow.xaml

<Window.DataContext><viewModels:TreeViewViewModel x:Name="viewModel"/></Window.DataContext><TreeView ItemsSource="{Binding TreeViewModelRoot.ChildrenModel1}"><TreeView.ItemTemplate><HierarchicalDataTemplate ItemsSource="{Binding ChildrenModel2}"><TextBlock Text="{Binding Name}"/><HierarchicalDataTemplate.ItemTemplate ><HierarchicalDataTemplate ItemsSource="{Binding ChildrenModel3}"><TextBlock Text="{Binding ID}"/><HierarchicalDataTemplate.ItemTemplate ><DataTemplate><TextBlock Text="{Binding Description}"/></DataTemplate></HierarchicalDataTemplate.ItemTemplate></HierarchicalDataTemplate></HierarchicalDataTemplate.ItemTemplate></HierarchicalDataTemplate></TreeView.ItemTemplate></TreeView>

(4)、运行结果

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。