Files
ShrlAlgoToolkit/WPFDark/Internals/TreeViewItemExtensions.cs

38 lines
960 B
C#
Raw Normal View History

2025-07-11 09:20:23 +08:00
using System;
using System.Windows.Controls;
using System.Windows.Media;
namespace WPFDark.Internals
{
internal static class TreeViewItemExtensions
{
internal static int GetDepth(this TreeViewItem item)
{
try
{
TreeViewItem? parent;
while ((parent = GetParent(item)) != null)
{
return GetDepth(parent) + 1;
}
}
catch
{
// ignored
}
return 0;
}
private static TreeViewItem? GetParent(TreeViewItem item)
{
var parent = VisualTreeHelper.GetParent(item);
while (!(parent is TreeViewItem || parent is TreeView))
{
parent = VisualTreeHelper.GetParent(parent ?? throw new InvalidOperationException());
}
return parent as TreeViewItem;
}
}
}