Silverlight和Visual Tree Manipulation

Silverlight和Visual Tree Manipulation,第1张

概述现在这可能比它的价值更麻烦但是,它现在对我来说真的很有用. 我想知道的是我如何在运行时 *** 作Silverlight可视化树.做一些简单的事情,比如添加和删除控件都很容易,但是当你开始以任何合理的复杂度遍历树时,我发现自己渴望使用JQuery样式语法(我认为LINQ也很酷)来处理DOM节点替换,动作等. 所以我想问题是,是否有任何图书馆可以使这项工作变得更容易,或者是否有一些我错过的东西? 是的Lin 现在这可能比它的价值更麻烦但是,它现在对我来说真的很有用.

我想知道的是我如何在运行时 *** 作Silverlight可视化树.做一些简单的事情,比如添加和删除控件都很容易,但是当你开始以任何合理的复杂度遍历树时,我发现自己渴望使用JQuery样式语法(我认为liNQ也很酷)来处理DOM节点替换,动作等.

所以我想问题是,是否有任何图书馆可以使这项工作变得更容易,或者是否有一些我错过的东西?

解决方法 是的linq扩展方法是您所追求的,但您需要首先放置一个小型基础设施: –

@H_502_21@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查询可视化树.一些例子:-

@H_502_21@// 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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004798.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存