大佬教程收集整理的这篇文章主要介绍了Silverlight和Visual Tree Manipulation,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道的是我如何在运行时操作Silverlight可视化树.做一些简单的事情,比如添加和删除控件都很容易,但是当你开始以任何合理的复杂度遍历树时,我发现自己渴望使用JQuery样式语法(我认为LINQ也很酷)来处理DOM节点替换,动作等.
所以我想问题是,是否有任何图书馆可以使这项工作变得更容易,或者是否有一些我错过的东西?
public static class VisualTreeEnumeration { public static IEnumerable<DependencyObject> Descendents(this DependencyObject root,int depth) { int count = VisualTreeHelper.GetChildrenCount(root); for (int i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(root,i); yield return child; if (depth > 0) { foreach (var descendent in Descendents(child,--depth)) yield return descendent; } } } public static IEnumerable<DependencyObject> Descendents(this DependencyObject root) { return Descendents(root,Int32.MaxValue); } public static IEnumerable<DependencyObject> Ancestors(this DependencyObject root) { DependencyObject current = VisualTreeHelper.GetParent(root); while (current != null) { yield return current; current = VisualTreeHelper.GetParent(current); } } }
现在,您可以使用Linq使用Linq查询可视化树.一些例子:-
// Get all text Boxes in usercontrol:- this.Descendents().OfType<TextBox>(); // All UIElement direct children of the layout root grid:- LayoutRoot.Descendents(0).OfType<UIElement>(); // Find the containing `ListBoxItem` for an element:- elem.Ancestors().OfType<ListBoxItem>.FirstOrDefault(); // Seek button with name "PinkElephants" even if outside of the current Namescope:- this.Descendents() .OfType<Button>() .FirstOrDefault(b => b.Name == "PinkElephants");
以上是大佬教程为你收集整理的Silverlight和Visual Tree Manipulation全部内容,希望文章能够帮你解决Silverlight和Visual Tree Manipulation所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。