
最明显的方法是递归地执行:
添加以列出< Type>的此控件的所有子项,然后对该控件的任何子项重复函数,该控件是< Panel>或后代.
但是我担心这不会在树中找到所有控件 – 任何ContentControl也可以包含< Type>的控件,就像headeredContentControl或具有一个或多个子/内容属性的任何其他类似控件一样.
是否有任何方法可以对实际布局树执行搜索,以便可以找到没有特定父级的特定控件类型的任何实例?
解决方法 这是一个相当天真的扩展方法: –public static class VisualTreeEnumeration{ public static IEnumerable<DependencyObject> Descendents(this DependencyObject root) { int count = VisualTreeHelper.GetChildrenCount(root); for (int i=0; i < count; i++) { var child = VisualTreeHelper.GetChild(root,i); yIEld return child; foreach (var descendent in Descendents(child)) yIEld return descendent; } }} 这种方法确实有一个缺点,它假设树成员资格在进行中没有发生变化.这可以通过使用ToList()来减少使用.
现在,您可以使用liNQ实现您的要求: –
var qryAllbuttons = myPanel.Descendents().OfType<button>();总结
以上是内存溢出为你收集整理的.net – Silverlight:查找布局中所有类型的控件全部内容,希望文章能够帮你解决.net – Silverlight:查找布局中所有类型的控件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)