我试图找到这个问题的答案,在每一篇文章中我都找到了递归查找孩子的答案,但他们都没有与隐藏或崩溃的孩子一起工作
同样在每个帖子中,有人问这是否可能,但没有人回答,所以我开始认为这是不可能的
如果有人有办法做到这一点,我将永远感激不尽。
我的功能如下所示:
public static DependencyObject FindLogicalDescendentByName(this DependencyObject source, string name)
{
DependencyObject result = null;
IEnumerable children = LogicalTreeHelper.GetChildren(source);
foreach (var child in children)
{
if (child is DependencyObject)
{
if (child is FrameworkElement)
{
if ((child as FrameworkElement).Name.Equals(name))
result = (DependencyObject)child;
else
result = (child as DependencyObject).FindLogicalDescendentByName(name);
}
else
{
result = (child as DependencyObject).FindLogicalDescendentByName(name);
}
if (result != null)
return result;
}
}
return result;
}
- 编辑所以,我意识到我的问题是我试图在创建项目之前找到它,
我正在绑定到 xaml 中的一个属性,该属性会关闭并按给定名称查找项目,但该项目当时没有创建,如果我在 xaml 中重新订购该项目,它可以工作并找到该项目。 .. 哦!