@@ -51,24 +51,24 @@ protected override DependencyObject GetContainerForItemOverride()
51
51
protected override bool IsItemItsOwnContainerOverride ( object ? item )
52
52
=> item is TreeListViewItem ;
53
53
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);
57
57
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
+ // }
68
68
69
- treeListViewItem . PrepareTreeListViewItem ( item , this , level , isExpanded ) ;
70
- }
71
- }
69
+ // treeListViewItem.PrepareTreeListViewItem(item, this, level, isExpanded);
70
+ // }
71
+ // }
72
72
73
73
protected override void ClearContainerForItemOverride ( DependencyObject element , object item )
74
74
{
@@ -86,11 +86,19 @@ internal void ItemExpandedChanged(TreeListViewItem item)
86
86
int index = ItemContainerGenerator . IndexFromContainer ( item ) ;
87
87
//Issue 3572
88
88
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
+
91
97
itemsSource . SetIsExpanded ( index , isExpanded ) ;
98
+
92
99
if ( isExpanded )
93
100
{
101
+ var children = item . GetChildren ( ) . ToList ( ) ;
94
102
int parentLevel = itemsSource . GetLevel ( index ) ;
95
103
for ( int i = 0 ; i < children . Count ; i ++ )
96
104
{
0 commit comments