11using MvvmTestDemo . DemoModels ;
22using Prism . Commands ;
33using Prism . Mvvm ;
4+ using System . Collections . Generic ;
45using System . Collections . ObjectModel ;
56using System . Windows ;
67using System . Windows . Controls ;
@@ -17,7 +18,7 @@ namespace MvvmTestDemo.DemoViewModels
1718{
1819 public class TreeViewDemoViewModel : BindableBase
1920 {
20- public ObservableCollection < TreeViewModel > TreeViewDemoItems { get ; set ; }
21+ public ObservableCollection < TreeViewModelStandard > TreeViewDemoItems { get ; set ; }
2122
2223 public DelegateCommand < RoutedPropertyChangedEventArgs < object > > TreeViewSelectedItemCommand => new DelegateCommand < RoutedPropertyChangedEventArgs < object > > ( OnTreeViewSelectedItemChanged ) ;
2324 public DelegateCommand TreeViewDoubleClickCommand => new DelegateCommand ( OnTreeViewDoubleClick ) ;
@@ -31,53 +32,87 @@ public TreeViewDemoViewModel()
3132
3233 private void InitData ( )
3334 {
34- TreeViewDemoItems = new ObservableCollection < TreeViewModel > ( ) ;
35- for ( int i = 1 ; i < 6 ; i ++ )
35+ var models = new List < TreeViewModelStandard > ( ) ;
36+ for ( int i = 0 ; i < 5 ; i ++ )
3637 {
37- TreeViewDemoItems . Add ( new TreeViewModel
38- {
39- Header = $ "Chance{ i } ",
40- HeaderIndex = i - 1 ,
41- Level = 1 ,
42- Root = null ,
43- } ) ;
38+ models . Add ( new TreeViewModelStandard { Header = $ "Chance{ i + 1 } ", Level = 1 , ParentLevel = 0 , IsParent = true } ) ;
39+ models . Add ( new TreeViewModelStandard { Header = $ "Chance{ i + 1 } ", Level = 2 , ParentLevel = 1 , IsParent = false } ) ;
40+ models . Add ( new TreeViewModelStandard { Header = $ "Chance{ i + 1 } ", Level = 3 , ParentLevel = 2 , IsParent = false } ) ;
4441 }
4542
46-
47- for ( int i = 1 ; i < 6 ; i ++ )
43+ TreeViewDemoItems = new ObservableCollection < TreeViewModelStandard > ( ) ;
44+ foreach ( var model in models )
4845 {
49- TreeViewDemoItems [ i - 1 ] . Children = new ObservableCollection < TreeViewModel > ( ) ;
50- for ( int j = 1 ; j < 6 ; j ++ )
46+ model . Children = new ObservableCollection < TreeViewModelStandard > ( ) ;
47+ model . Children . AddRange ( FindChild ( model ) ) ;
48+
49+ if ( model . ParentLevel == 0 ) //判断是否为根节点
5150 {
52- TreeViewDemoItems [ i - 1 ] . Children . Add ( new TreeViewModel
53- {
54- Header = $ "Chance{ j } ",
55- HeaderIndex = j - 1 ,
56- Level = 2 ,
57- Root = TreeViewDemoItems [ i - 1 ] ,
58- } ) ;
51+ TreeViewDemoItems . Add ( model ) ;
5952 }
6053 }
6154
62- for ( int i = 1 ; i < 6 ; i ++ )
55+ IEnumerable < TreeViewModelStandard > FindChild ( TreeViewModelStandard node )
6356 {
64- for ( int j = 1 ; j < 6 ; j ++ )
57+ foreach ( var model in models )
6558 {
66- TreeViewDemoItems [ i - 1 ] . Children [ j - 1 ] . Children = new ObservableCollection < TreeViewModel > ( ) ;
67- for ( int h = 1 ; h < 6 ; h ++ )
68- {
69- TreeViewDemoItems [ i - 1 ] . Children [ j - 1 ] . Children . Add ( new TreeViewModel
70- {
71- Header = $ "Chance{ h } ",
72- HeaderIndex = h - 1 ,
73- Level = 3 ,
74- Root = TreeViewDemoItems [ i - 1 ] . Children [ j - 1 ] ,
75- } ) ;
76- }
59+ if ( model . ParentLevel == node . Level )
60+ yield return model ;
7761 }
62+
63+ yield break ;
7864 }
7965 }
8066
67+ private void InitData1 ( )
68+ {
69+ //TreeViewDemoItems = new ObservableCollection<TreeViewModel>();
70+ //for (int i = 1; i < 6; i++)
71+ //{
72+ // TreeViewDemoItems.Add(new TreeViewModel
73+ // {
74+ // Header = $"Chance{i}",
75+ // HeaderIndex = i - 1,
76+ // Level = 1,
77+ // Root = null,
78+ // }) ;
79+ //}
80+
81+
82+ //for (int i = 1; i < 6; i++)
83+ //{
84+ // TreeViewDemoItems[i - 1].Children = new ObservableCollection<TreeViewModel>();
85+ // for (int j = 1; j < 6; j++)
86+ // {
87+ // TreeViewDemoItems[i - 1].Children.Add(new TreeViewModel
88+ // {
89+ // Header = $"Chance{j}",
90+ // HeaderIndex = j - 1,
91+ // Level = 2,
92+ // Root = TreeViewDemoItems[i - 1],
93+ // });
94+ // }
95+ //}
96+
97+ //for (int i = 1; i < 6; i++)
98+ //{
99+ // for (int j = 1; j < 6; j++)
100+ // {
101+ // TreeViewDemoItems[i - 1].Children[j - 1].Children = new ObservableCollection<TreeViewModel>();
102+ // for (int h = 1; h < 6; h++)
103+ // {
104+ // TreeViewDemoItems[i - 1].Children[j - 1].Children.Add(new TreeViewModel
105+ // {
106+ // Header = $"Chance{h}",
107+ // HeaderIndex = h - 1,
108+ // Level = 3,
109+ // Root = TreeViewDemoItems[i - 1].Children[j - 1],
110+ // });
111+ // }
112+ // }
113+ //}
114+ }
115+
81116 private void OnTreeViewSelectedItemChanged ( RoutedPropertyChangedEventArgs < object > e )
82117 {
83118 var treeView = e . Source as TreeView ;
0 commit comments