FrameworkContentElement.Parent 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取此元素的逻辑树中的父级。
public:
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
属性值
此元素的逻辑父级。
示例
以下示例检查某一TextPointer类型的值是否Parent为特定类型。
// Traverse content in forward direction until the position is immediately after the opening
// tag of a Run element, or the end of content is encountered.
while (position != null)
{
// Is the current position just after an opening element tag?
if (position.GetPointerContext(LogicalDirection.Backward) == TextPointerContext.ElementStart)
{
// If so, is the tag a Run?
if (position.Parent is Run)
break;
}
// Not what we're looking for; on to the next position.
position = position.GetNextContextPosition(LogicalDirection.Forward);
}
' Traverse content in forward direction until the position is immediately after the opening
' tag of a Run element, or the end of content is encountered.
Do While position IsNot Nothing
' Is the current position just after an opening element tag?
If position.GetPointerContext(LogicalDirection.Backward) = TextPointerContext.ElementStart Then
' If so, is the tag a Run?
If TypeOf position.Parent Is Run Then
Exit Do
End If
End If
' Not what we're looking for on to the next position.
position = position.GetNextContextPosition(LogicalDirection.Forward)
Loop
注解
请注意,元素的逻辑父级可能会根据应用程序功能而更改,并且保留此属性的值不会反映该更改。 通常,在需要该值之前,应立即获取该值。
有关遍历逻辑树的详细信息,请参阅 WPF 中的树 ,以及将此方法用于元素发现的方案是合适的。
属性系统可能会在重新父级时重新计算元素的所有属性值,因为某些属性通过逻辑树继承值。 DataContext应用于绑定的元素在重新父级时也可以更改。
更改元素的父元素通常只能通过操作集合、使用专用添加或删除方法,或通过设置元素的内容属性来完成。
使用属性 Parent 的最典型方案是获取引用,然后从父级获取各种 FrameworkContentElement 属性值。 对于模板, Parent 模板最终将是 null
。 若要超过此点并扩展到实际应用模板的逻辑树,请使用 TemplatedParent。