zoukankan      html  css  js  c++  java
  • wpf获取父控件、子控件

    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          }
  • 相关阅读:
    浅析Json底层
    浅析servlet
    xml树结构
    JS中BOM和DOM之间的关系
    Test openLiveWriter
    JAVA静态代理动态代理详解
    java多态实现示例
    java类中的变量以及方法的执行顺序
    java值传递
    将javaweb项目部署到服务器中
  • 原文地址:https://www.cnblogs.com/Seek-logic/p/3234008.html
Copyright © 2011-2022 走看看