• WPF XMAL获取元素的父元素,子元素


    /// 获得指定元素的父元素  
            /// </summary>  
            /// <typeparam name="T">指定页面元素</typeparam>  
            /// <param name="obj"></param>  
            /// <returns></returns>  
            public T GetParentObject<T>(DependencyObject obj) where T : FrameworkElement  
            {  
                DependencyObject parent = VisualTreeHelper.GetParent(obj);  
      
                while (parent != null)  
                {  
                    if (parent is T)  
                    {  
                        return (T)parent;  
                    }  
      
                    parent = VisualTreeHelper.GetParent(parent);  
                }  
      
                return null;  
            }  
      
            /// <summary>  
            /// 获得指定元素的所有子元素  
            /// </summary>  
            /// <typeparam name="T"></typeparam>  
            /// <param name="obj"></param>  
            /// <returns></returns>  
            public List<T> GetChildObjects<T>(DependencyObject obj) where T : FrameworkElement  
            {  
                DependencyObject child = null;  
                List<T> childList = new List<T>();  
      
                for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)  
                {  
                    child = VisualTreeHelper.GetChild(obj, i);  
      
                    if (child is T)  
                    {  
                        childList.Add((T)child);  
                    }  
                    childList.AddRange(GetChildObjects<T>(child));  
                }  
                return childList;  
            }  
    

      

     /// 查找子元素  
            /// </summary>  
            /// <typeparam name="T"></typeparam>  
            /// <param name="obj"></param>  
            /// <param name="name"></param>  
            /// <returns></returns>  
            public T GetChildObject<T>(DependencyObject obj, string name) where T : FrameworkElement  
            {  
                DependencyObject child = null;  
                T grandChild = null;  
      
      
                for (int i = 0; i <= VisualTreeHelper.GetChildrenCount(obj) - 1; i++)  
                {  
                    child = VisualTreeHelper.GetChild(obj, i);  
      
      
                    if (child is T && (((T)child).Name == name | string.IsNullOrEmpty(name)))  
                    {  
                        return (T)child;  
                    }  
                    else  
                    {  
                        grandChild = GetChildObject<T>(child, name);  
                        if (grandChild != null)  
                            return grandChild;  
                    }  
                }  
                return null;  
            }  
    

      转载自http://blog.csdn.net/duanzi_peng/article/details/17094639

  • 相关阅读:
    SDUT-3376_数据结构实验之查找四:二分查找
    SDUT-3375_数据结构实验之查找三:树的种类统计
    SDUT-3373_数据结构实验之查找一:二叉排序树
    深度优先遍历和广度优先遍历
    SDUT-2498_AOE网上的关键路径
    SDUT-2140_判断给定图是否存在合法拓扑序列
    SDUT-2144_最小生成树
    SDUT-3364_欧拉回路
    SDUT-3363_驴友计划
    Java练习 SDUT-2271_Eddy的难题
  • 原文地址:https://www.cnblogs.com/lelehellow/p/6699424.html
Copyright © 2020-2023  润新知