2010-10-05 62 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)。