Files
ShrlAlgoToolkit/WPFDark/Internals/TreeViewItemExtensions.cs
ShrlAlgo 4d35cadb56 更新
2025-07-11 09:20:23 +08:00

38 lines
960 B
C#

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;
}
}
}