Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 26 additions & 18 deletions src/MaterialDesignThemes.Wpf/TreeListView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,24 +51,24 @@ protected override DependencyObject GetContainerForItemOverride()
protected override bool IsItemItsOwnContainerOverride(object? item)
=> item is TreeListViewItem;

protected override void PrepareContainerForItemOverride(DependencyObject element, object? item)
{
base.PrepareContainerForItemOverride(element, item);
//protected override void PrepareContainerForItemOverride(DependencyObject element, object? item)
//{
// base.PrepareContainerForItemOverride(element, item);

if (element is TreeListViewItem treeListViewItem)
{
int level = 0;
bool isExpanded = false;
int index = ItemContainerGenerator.IndexFromContainer(treeListViewItem);
if (index >= 0 && InternalItemsSource is { } itemsSource)
{
level = itemsSource.GetLevel(index);
isExpanded = itemsSource.GetIsExpanded(index);
}
// if (element is TreeListViewItem treeListViewItem)
// {
// int level = 0;
// bool isExpanded = false;
// int index = ItemContainerGenerator.IndexFromContainer(treeListViewItem);
// if (index >= 0 && InternalItemsSource is { } itemsSource)
// {
// level = itemsSource.GetLevel(index);
// isExpanded = itemsSource.GetIsExpanded(index);
// }

treeListViewItem.PrepareTreeListViewItem(item, this, level, isExpanded);
}
}
// treeListViewItem.PrepareTreeListViewItem(item, this, level, isExpanded);
// }
//}

protected override void ClearContainerForItemOverride(DependencyObject element, object item)
{
Expand All @@ -86,11 +86,19 @@ internal void ItemExpandedChanged(TreeListViewItem item)
int index = ItemContainerGenerator.IndexFromContainer(item);
//Issue 3572
if (index < 0) return;
var children = item.GetChildren().ToList();
bool isExpanded = item.IsExpanded;
var isExpanded = item.IsExpanded;
var internalIsExpanded = itemsSource.GetIsExpanded(index);

if (internalIsExpanded == isExpanded)
{
return;
}

itemsSource.SetIsExpanded(index, isExpanded);

if (isExpanded)
{
var children = item.GetChildren().ToList();
int parentLevel = itemsSource.GetLevel(index);
for (int i = 0; i < children.Count; i++)
{
Expand Down
13 changes: 12 additions & 1 deletion src/MaterialDesignThemes.Wpf/TreeListViewItem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,18 @@ public override void OnApplyTemplate()

void OnTemplateChanged(object? sender, EventArgs e)
{
PrepareTreeListViewItem(Content, TreeListView!, Level, IsExpanded);
int level = 0;
bool isExpanded = false;
int index = TreeListView!.ItemContainerGenerator.IndexFromContainer(this);


if (index >= 0 && TreeListView.InternalItemsSource is { } itemsSource)
{
level = itemsSource.GetLevel(index);
isExpanded = itemsSource.GetIsExpanded(index);
}

PrepareTreeListViewItem(Content, TreeListView, level, isExpanded);
}
}
}
Expand Down
Loading