WP8.1程序开发,可视树VisualTreeHelper类的使用

本文详细介绍了如何使用VisualTreeHelper类在XAML中通过控件名和类型来查找特定控件,并提供了示例代码帮助开发者更好地理解和实现控件遍历功能。

对于可视树的使用,很久之前就接触了,

  一方面当时知识太浅根本看不懂,就放下没看了;

  另一方面,也没用到,就没往这方面努力研究学习;

  现在好了,遇到问题了,正好涉及到VisualTreeHelper的使用,就开始找有关方面的示例学习,经过断断续续地学习,算是明白了一点用法,现在就来讲一下个人的理解:

1.首先,在名为"fv"的FlipView控件内有一个名为"img"的Image控件,前台代码如下:

1 <FlipView x:Name="fv" Margin="0 0 0 0">
2                 <FlipView.ItemTemplate>
3                     <DataTemplate>
4                         <Image x:Name="img" Margin="0 0 0 0"  Source="{Binding ImageSource}" Stretch="Uniform"  ></Image>
5                        
6                     </DataTemplate>
7                 </FlipView.ItemTemplate>
8             </FlipView>

2.接下来,我们要用VisualTreeHelper类,通过遍历来找名为"img"的Image控件(如果不用此方法,在后台不能直接用"img"获得Image控件),遍历方法为:


 1 public static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject
 2         {
 3             for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
 4             {
 5                 var child = VisualTreeHelper.GetChild(parent, i);
 6                 string controlName = child.GetValue(Control.NameProperty) as string;
 7                 if (controlName == name)
 8                 {
 9                     return child as T;
10                 }
11                 else
12                 {
13                     T result = FindVisualChildByName<T>(child, name);
14                     if (result != null)
15                         return result;
16                 }
17             }
18             return null;
19         }

 


3.最后,我们要使用上方面写的方法,来得到Image控件:

 Image v = FindVisualChildByName<Image>(fv, "img");

4.这样,我们就得到了FlipView控件内有一个名为"img"的Image控件 v的实例,这样,我们就可以对实例v进行一系列的操作;

  当然,这个示例是通过控件名来遍历出控件的,还有通过控件的类型遍历得到所需要的控件,那个还没用过,感觉没通过名字得到的精准,之后用到了再讲。

 

转载于:https://www.cnblogs.com/zmlohw/p/5188272.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值