Files
ShrlAlgoToolkit/ShrlAlgoToolkit.Revit/Assists/VisualAssist.cs

52 lines
1.0 KiB
C#
Raw Normal View History

2024-09-22 11:05:41 +08:00
using System.Windows;
using System.Windows.Media;
2025-04-24 20:56:44 +08:00
namespace ShrlAlgoToolkit.Revit.Assists;
2024-09-22 11:05:41 +08:00
public static class VisualAssist
{
public static T FindVisualParent<T>(FrameworkElement element, string name)
where T : FrameworkElement
{
var parentElement = (FrameworkElement)VisualTreeHelper.GetParent(element);
while (parentElement != null)
{
if (parentElement is T parent)
{
if (parentElement.Name == name)
{
return parent;
}
}
parentElement = (FrameworkElement)VisualTreeHelper.GetParent(parentElement);
}
return null;
}
public static T FindVisualChild<T>(FrameworkElement element, string name)
where T : Visual
{
for (var i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
{
var childElement = (FrameworkElement)VisualTreeHelper.GetChild(element, i);
if (childElement is T child)
{
if (childElement.Name == name)
{
return child;
}
}
var descendent = FindVisualChild<T>(childElement, name);
if (descendent != null)
{
return descendent;
}
}
return null;
}
}