zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    VSS部署手册
    正则表达式学习(二)
    完全卸载oracle11g步骤
    c#中 命令copy 已退出,返回值为1
    Windows 64位下装Oracle 11g,PLSQL Developer的配置问题,数据库处显示为空白的解决方案
    ora01033和ora12560错误的解决方案
    C#DLL加密保护
    ocslive.conf
    ASP.NET中文乱码问题的解决
    Creating a very simple autorestore USB stick clonezilla
  • 原文地址:https://www.cnblogs.com/lelehellow/p/6699424.html
Copyright © 2011-2022 走看看