【轉】WPF尋找子控制項和父控制項方法

來源:互聯網
上載者:User

標籤:code   pen   tty   empty   style   list   https   htm   ldo   

一、尋找某種類型的子控制項,並返回一個List集合
public List<T> GetChildObjects<T>(DependencyObject obj, Type typename) 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 && (((T)child).GetType() == typename))                {                    childList.Add((T)child);                }                childList.AddRange(GetChildObjects<T>(child,typename));            }return childList;        }
調用:
List<Button> listButtons = GetChildObjects<Button>(parentPanel, typeof(Button));
二、通過名稱尋找子控制項,並返回一個List集合
public List<T> GetChildObjects<T>(DependencyObject obj, string name) 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 && (((T)child).GetType() == name |string.IsNullOrEmpty(name)))                {                    childList.Add((T)child);                }                childList.AddRange(GetChildObjects<T>(child,name));            }return childList;        }
調用:
List<Button> listButtons = GetChildObjects<Button>(parentPanel, "button1");
三、通過名稱尋找某子控制項:
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;}
調用:
StackPanel sp = GetChildObject<StackPanel>(this.LayoutRoot, "spDemoPanel");
四、通過名稱尋找父控制項
public T GetParentObject<T>(DependencyObject obj, string name) where T : FrameworkElement{    DependencyObject parent = VisualTreeHelper.GetParent(obj);while (parent != null)    {if (parent is T && (((T)parent).Name == name | string.IsNullOrEmpty(name)))        {return (T)parent;        }        parent = VisualTreeHelper.GetParent(parent);    }return null;}
調用:
Grid layoutGrid = VTHelper.GetParentObject<Grid>(this.spDemoPanel, "LayoutRoot"); 

原文地址:https://www.cnblogs.com/udoless/p/3381411.html





【轉】WPF尋找子控制項和父控制項方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.