博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Silverlight]按类型查找模板控件里的子控件
阅读量:6813 次
发布时间:2019-06-26

本文共 1689 字,大约阅读时间需要 5 分钟。

Silverlight中的控件是基于Xaml模板的控件树形结构,这给控件制作提供了很大的灵活性,可以组合,嵌套等。同时也给控件的查找造成了不便,Silverlight提供了VisualTreeHelper类帮助我们遍历控件树。例如我们要按照控件类型查找控件,可以采用下面的递归算法:

public class VisualTree    {        public static void FindControlByType
(DependencyObject container,List
ls) where T : DependencyObject { FindControlByType
(container, null, ls); } public static void FindControlByType
(DependencyObject container, string name,List
ls) where T : DependencyObject { //for each child object in the container for (int i = 0; i < VisualTreeHelper.GetChildrenCount(container); i++) { //is the object of the type we are looking for? if (VisualTreeHelper.GetChild(container, i) is T &&             (VisualTreeHelper.GetChild(container, i).GetValue(FrameworkElement.NameProperty).Equals(name) || name == null)) { T foundControl = (T)VisualTreeHelper.GetChild(container, i); ls.Add(foundControl); } //if not, does it have children? else if (VisualTreeHelper.GetChildrenCount(VisualTreeHelper.GetChild(container, i)) > 0) { //recursively look at its children FindControlByType
(VisualTreeHelper.GetChild(container, i), name, ls); } } } }}

调用非常简单:

List
ls = new List
(); VisualTree.FindControlByType
(this.LinksStackPanel, ls);

 

转载于:https://www.cnblogs.com/slmk/archive/2013/04/23/3037756.html

你可能感兴趣的文章
WPF:MVVM模式下ViewModel关闭View
查看>>
I/O多路复用
查看>>
C# 简单封装一个XML文件读取类
查看>>
第四篇4.1章
查看>>
指针 && 双指针
查看>>
mysql 数据备份 crontab
查看>>
东鹏特饮占据市场第二的背后:数据让我们比谁都了解消费者!
查看>>
errno是否是thread safe的
查看>>
输入框正则表达式大全
查看>>
Android 三种动画详解
查看>>
函数指针和指针函数
查看>>
C#DateTime的用法
查看>>
好博客网址
查看>>
mysql表的操作
查看>>
小程序方法-小程序获取上一页的数据修改上一个页面的数据
查看>>
基于OpenGL编写一个简易的2D渲染框架-11 重构渲染器-Renderer
查看>>
eclipse 当中,小白们所不知道的 CRTL+1 快捷键
查看>>
gcc/g++ 如何支持c11/c++11标准编译
查看>>
jquery_EasyUI使用细节注意
查看>>
好的文章万里挑一
查看>>