如何通过谓词在 VisualTree 中找到框架元素?类似的东西:
public static FrameworkElement FindChild(FrameworkElement root, Predicate<> predicate)
{
...
}
我将使用它:
Button btn = FindChild(MainForm, element => element is Button);
提前感谢您的帮助!
如何通过谓词在 VisualTree 中找到框架元素?类似的东西:
public static FrameworkElement FindChild(FrameworkElement root, Predicate<> predicate)
{
...
}
我将使用它:
Button btn = FindChild(MainForm, element => element is Button);
提前感谢您的帮助!
所以真正的问题是如何遍历给定“根”元素的所有子元素。因为这样您就可以调用该元素的谓词并选择您想要的那些。所以我想你应该在这里区分两种不同的工作流程 - 一个 - 当元素是 Panel 时,你应该首先将它传入,然后遍历它的 Children 属性并传入其中的每一个(递归和非递归都可以工作,但是您应该更深入地了解树,并在两种情况下都通过关卡返回)。如果是非面板元素,只需将该元素传递给谓词。您还应该考虑具有“内容”属性的元素(我想这是在某些基本类型中定义的,我不记得是哪一个),因此以相同的方式检查内容元素。就这样。
问候, 阿尔塔克
您可以使用 LINQ 找出特定类型的控件,可能是这样的:
List<Button> btns = Controls.OfType<Button>().ToList();
这个 SO question的答案描述了在可视化树中查找控件的多种方法。
谓词版本在此处作为指向this的链接给出。