2010-10-05 50 views
0

我有建設:如何搜索父母?

Grid a = ((((usercontrol.Parent as DockPanel).Parent as ScrollViewer).Parent as Grid) 

是否有可能找到一個樹或父元素?

例如:網格A = GetFirstParent(用戶控件, 「網格」)網格 - 是型元件

+0

只是說明你的設計存在。如果「as」操作符無法轉換,它將返回null。使這個特定的功能非常依賴於你的用戶控件的視覺結構。如果你改變它,這可能會拋出空例外 – Val 2010-10-05 23:30:42

回答

1
Grid a = userControl.FindParent<Grid>(); 

public static T FindParent<T>(this DependencyObject startElement) 
     where T : DependencyObject 
    { 
     DependencyObject parent = GetParentObject(startElement); 
     if (parent == null) 
      return null; 

     T typedParent = parent as T; 
     if (typedParent != null) 
     { 
      return typedParent; 
     } 

     return FindParent<T>(parent); 
    } 
0

使用VisualTreeHelper類。

它有一個方法GetParent,它返回一個控件的父對象(確實是一個DependencyObject)。