@@ -51,24 +51,24 @@ protected override DependencyObject GetContainerForItemOverride()
5151 protected override bool IsItemItsOwnContainerOverride ( object ? item )
5252 => item is TreeListViewItem ;
5353
54- protected override void PrepareContainerForItemOverride ( DependencyObject element , object ? item )
55- {
56- base . PrepareContainerForItemOverride ( element , item ) ;
54+ // protected override void PrepareContainerForItemOverride(DependencyObject element, object? item)
55+ // {
56+ // base.PrepareContainerForItemOverride(element, item);
5757
58- if ( element is TreeListViewItem treeListViewItem )
59- {
60- int level = 0 ;
61- bool isExpanded = false ;
62- int index = ItemContainerGenerator . IndexFromContainer ( treeListViewItem ) ;
63- if ( index >= 0 && InternalItemsSource is { } itemsSource )
64- {
65- level = itemsSource . GetLevel ( index ) ;
66- isExpanded = itemsSource . GetIsExpanded ( index ) ;
67- }
58+ // if (element is TreeListViewItem treeListViewItem)
59+ // {
60+ // int level = 0;
61+ // bool isExpanded = false;
62+ // int index = ItemContainerGenerator.IndexFromContainer(treeListViewItem);
63+ // if (index >= 0 && InternalItemsSource is { } itemsSource)
64+ // {
65+ // level = itemsSource.GetLevel(index);
66+ // isExpanded = itemsSource.GetIsExpanded(index);
67+ // }
6868
69- treeListViewItem . PrepareTreeListViewItem ( item , this , level , isExpanded ) ;
70- }
71- }
69+ // treeListViewItem.PrepareTreeListViewItem(item, this, level, isExpanded);
70+ // }
71+ // }
7272
7373 protected override void ClearContainerForItemOverride ( DependencyObject element , object item )
7474 {
@@ -86,11 +86,19 @@ internal void ItemExpandedChanged(TreeListViewItem item)
8686 int index = ItemContainerGenerator . IndexFromContainer ( item ) ;
8787 //Issue 3572
8888 if ( index < 0 ) return ;
89- var children = item . GetChildren ( ) . ToList ( ) ;
90- bool isExpanded = item . IsExpanded ;
89+ var isExpanded = item . IsExpanded ;
90+ var internalIsExpanded = itemsSource . GetIsExpanded ( index ) ;
91+
92+ if ( internalIsExpanded == isExpanded )
93+ {
94+ return ;
95+ }
96+
9197 itemsSource . SetIsExpanded ( index , isExpanded ) ;
98+
9299 if ( isExpanded )
93100 {
101+ var children = item . GetChildren ( ) . ToList ( ) ;
94102 int parentLevel = itemsSource . GetLevel ( index ) ;
95103 for ( int i = 0 ; i < children . Count ; i ++ )
96104 {
0 commit comments