2011-12-21 16 views

答えて

2

VisualTreeHelperを使用できます。以下のコードは、WPFアプリケーションでPageを見つけるために使用しているコードです。 PageをSilverlightで必要なコンテナ(おそらくPopup)に置き換えることができます。

var parent = VisualTreeHelper.GetParent(this); 
    while (!(parent is Page)) 
    { 
     parent = VisualTreeHelper.GetParent(parent); 
    } 
1

public static class ControlFinder 
{ 
    public static T FindParent<T>(this UIElement control) where T: UIElement 
    { 
     UIElement p = VisualTreeHelper.GetParent(control) as UIElement; 
     if (p != null) 
     { 
      if (p is T) 
       return p as T; 
      else 
       return ControlFinder.FindParent<T>(p); 
     } 
     return null; 
    } 
} 

は次のようにそれを使用してください。あなたのコントロールの構造を知っているなら、ユーザFrameworkElement.GetParent()、あるいはBFSやDFSのようなTree-traversal algorithmsを使ってあなたのフレームワーク要素を見つけることができます。

関連する問題