如何通过谓词在VisualTree中找到框架元素?大概是这样的:
public static FrameworkElement FindChild(FrameworkElement root, Predicate<> predicate)
{
...
}我打算这样使用它:
Button btn = FindChild(MainForm, element => element is Button);提前感谢您的帮助!
发布于 2012-07-24 17:50:46
您可以使用LINQ来查找特定类型的控件,可能如下所示:
List<Button> btns = Controls.OfType<Button>().ToList();发布于 2012-07-24 17:40:56
因此,真正的问题是如何遍历给定"root“元素的所有子元素。因为这样您就可以调用该元素的谓词,并选择所需的谓词。所以我认为你应该在这里区分两个不同的工作流-一个-当元素是Panel时,你应该首先传递它,然后迭代它的should属性并传递其中的每一个(递归和非递归都可以,但你应该深入到树中,并在两种情况下都通过级别返回)。在非面板元素的情况下,只需将该元素传递给谓词。此外,您还应该考虑具有" content“属性的元素(我想这是在某个基类型中定义的,我不记得是哪个基类型了),所以以同样的方式检查content元素。仅此而已。
问候你,Artak
发布于 2012-07-24 17:36:08
Answers to this SO question描述了在可视化树中查找控件的许多方法。
谓词版本在那里作为到this的链接给出。
https://stackoverflow.com/questions/11627981
复制相似问题