FrameworkElement.Parent プロパティ


この要素の論理上の親要素を取得します。Gets the logical parent element of this element.

 property System::Windows::DependencyObject ^ Parent { System::Windows::DependencyObject ^ get(); };
public System.Windows.DependencyObject Parent { get; }
member this.Parent : System.Windows.DependencyObject
Public ReadOnly Property Parent As DependencyObject


この要素の論理上の親。This element's logical parent.

次の例では、要素の親を確認し、親のプロパティ値を使用して、一致する子要素のプロパティを設定するコードを示します。The following example shows code that checks for an element's parent, and then uses property values from the parent to set properties on the child element to match. この場合、表示サイズに影響するプロパティです。In this case these are properties that affect the rendering size.

private void OnUIReady(object sender, System.EventArgs e)
    LinePane.Width = ((StackPanel)LinePane.Parent).ActualWidth;
    LinePane.Height = ((StackPanel)LinePane.Parent).ActualHeight;
    DesignerPane.MouseLeave += new System.Windows.Input.MouseEventHandler(DesignerPane_MouseLeave);
    this.SizeChanged += new SizeChangedEventHandler(Window1_SizeChanged);
Private Sub OnUIReady(ByVal sender As Object, ByVal e As System.EventArgs)
    LinePane.Width = (CType(LinePane.Parent, StackPanel)).ActualWidth
    LinePane.Height = (CType(LinePane.Parent, StackPanel)).ActualHeight
    AddHandler DesignerPane.MouseLeave, AddressOf DesignerPane_MouseLeave
    AddHandler SizeChanged, AddressOf Window1_SizeChanged
End Sub


Parent は、要素がインスタンス化されていても、最終的にページレベルのルート要素またはアプリケーションオブジェクトに接続する論理ツリーにアタッチされていない場合に null できます。Parent may be null in cases where an element was instantiated, but is not attached to any logical tree that eventually connects to the page level root element, or the application object.

要素の論理上の親は、アプリケーションの機能によって変わる可能性があります。このプロパティの値を維持しても、その変更は反映されません。Note that the logical parent of an element can potentially change depending on your application's functionality, and keeping the value of this property will not reflect that change. 通常は、必要な値をすぐに取得する必要があります。You typically should get the value immediately before you need it.

論理ツリーの走査の詳細と、親要素の検出の手法として Parent を使用するシナリオについては、「 WPF のツリー 」を参照してください。See Trees in WPF for more information about logical tree traversal, and the scenarios where using Parent as a technique of parent element discovery is appropriate.

プロパティエンジンは、親のときに、要素のすべてのプロパティ値を再計算する可能性があります。これは、一部のプロパティが論理ツリーを通じて値を継承するためです。The property engine will potentially recalculate all property values of an element when it is reparented, because some properties inherit values through the logical tree. バインドに適用される DataContext は、要素が親されたときにも変更できます。The DataContext that applies for bindings can also change when elements are reparented.

通常、要素の親を変更するには、専用の add メソッドまたは remove メソッドを使用するか、要素のコンテンツプロパティを設定することによって、コレクションの操作を行います。Changing an element's parent is typically only done through manipulation of collections, by using dedicated add or remove methods, or through setting content properties of elements.

Parent プロパティを使用する最も一般的なシナリオは、参照を取得し、親からさまざまな FrameworkElement プロパティ値を取得することです。The most typical scenario for using the Parent property is to obtain a reference and then get various FrameworkElement property values from the parent. テンプレートの場合は、最終的にテンプレートの Parentnullされます。For templates, the Parent of the template eventually will be null. この点を超えて、テンプレートが実際に適用される論理ツリーに拡張するには、TemplatedParentを使用します。To get past this point and extend into the logical tree where the template is actually applied, use TemplatedParent.

このプロパティは、論理ツリーの親とは異なる場合に、ビジュアルツリーの親を報告しないことに注意してください。Note that this property does not report visual tree parents in cases where these vary from the logical tree parents. 一般的なアプリケーションの場合、ビジュアルツリーの親は通常は重要ではありませんが、特定のビジュアルレベルのケースに必要な親要素である場合があります。Visual tree parents are not typically important for general application cases but may be the desired parent elements for certain visual level cases. 以下を参照してください。VisualTreeHelperSee VisualTreeHelper.