Silverlight程序获取父级Grid元素

 

1、获取父控件

调用方法:Grid layoutGrid = VTHelper.GetParentObject<Grid>(this.spDemoPanel, "LayoutRoot");

 1 public T GetParentObject<T>(DependencyObject obj, string name) where T : FrameworkElement
 2 {
 3     DependencyObject parent = VisualTreeHelper.GetParent(obj);
 4     while (parent != null)
 5     {
 6         if (parent is T && (((T)parent).Name == name || string.IsNullOrEmpty(name)))
 7         {
 8            return (T)parent;
 9         }
10         parent = VisualTreeHelper.GetParent(parent);
11     }
12     return null;
13}

 

2、获取子控件

调用方法:StackPanel sp = VTHelper.GetChildObject<StackPanel>(this.LayoutRoot, "spDemoPanel");

 1 public T GetChildObject<T>(DependencyObject obj, string name) where T : FrameworkElement
 2           {
 3               DependencyObject child = null;
 4               T grandChild = null;
 5               for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
 6               {
 7                  child = VisualTreeHelper.GetChild(obj, i);
 8                  if (child is T && (((T)child).Name == name || string.IsNullOrEmpty(name)))
 9                  {
10                      return (T)child;
11                  }
12                  else
13                  {
14                      grandChild = GetChildObject<T>(child, name);
15                      if (grandChild != null)
16                      return grandChild;
17                  }
18              }
19              return null;
20          }

 

 

 

3、获取所有子控件

调用方法:List<TextBlock> textblock = VTHelper.GetChildObjects<TextBlock>(this.LayoutRoot, "");

在表格中的控件:List<TextBox> listTextBox = GetChildObjects<TextBox>(radGridView_File.ItemContainerGenerator.ContainerFromItem(radGridView_File.SelectedItems[0]), "");

 1 public List<T> GetChildObjects<T>(DependencyObject obj, string name) where T : FrameworkElement
 2           {
 3               DependencyObject child = null;
 4               List<T> childList = new List<T>();
 5               for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)
 6               {
 7                  child = VisualTreeHelper.GetChild(obj, i);
 8                  if (child is T && (((T)child).Name == name || string.IsNullOrEmpty(name)))
 9                  {
10                      childList.Add((T)child);
11                  }
12                 childList.AddRange(GetChildObjects<T>(child,""));
13               }
14              return childList;
15          }

 

 

 

转载于:https://www.cnblogs.com/Seek-logic/p/3234008.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值