DependencyProperty.AddOwner 方法

定义

将另一种类型添加为已注册到一种类型的依赖属性的所有者。

重载

AddOwner(Type)

将另一种类型添加为已注册的依赖属性的所有者。

AddOwner(Type, PropertyMetadata)

将其他类型添加为已注册的依赖对象所有者,从而为依赖属性提供依赖属性元数据使其存在于提供的所有者类型上。

AddOwner(Type)

将另一种类型添加为已注册的依赖属性的所有者。

public:
 System::Windows::DependencyProperty ^ AddOwner(Type ^ ownerType);
public System.Windows.DependencyProperty AddOwner (Type ownerType);
member this.AddOwner : Type -> System.Windows.DependencyProperty
Public Function AddOwner (ownerType As Type) As DependencyProperty

参数

ownerType
Type

要作为此依赖属性所有者添加的类型。

返回

DependencyProperty

一个引用,它指向可标识依赖属性的原始 DependencyProperty 标识符。 应通过将类添加为 public static readonly 字段来公开此标识符。

注解

此方法使属性系统能够识别最初未注册该特定依赖属性的类型上的依赖属性。

通常, AddOwner 用于向尚未通过托管类继承公开依赖属性的类添加依赖属性, (类继承将导致派生类继承包装器属性,从而为已) 的依赖属性提供常规成员表访问权限。 AddOwner 使属性系统能够识别最初未注册该依赖属性的类型上的依赖属性。

此签名不允许指定元数据。 使用此方法时,将为新的 DependencyProperty 及其所有者类型自动生成元数据。 自动生成的元数据是已合并元数据的结果,该元数据来自已定义此属性的所有基类型。 如果没有可用的合并元数据,则使用属性的默认元数据。 如果使用该方法注册 RegisterAttached 属性,则默认元数据与调用时 RegisterAttached 创建的元数据相同。 否则,使用 PropertyMetadata 属性设置为属性类型的默认值创建 DefaultValue 对象,并将该 PropertyMetadata 属性的所有其他属性设置为 nullAddOwner(Type, PropertyMetadata)如果要为添加到提供的类型的依赖属性版本提供元数据,请使用签名。

此方法的返回值通常用于通过存储依赖属性标识符来声明和公开依赖属性。 如果想要针对依赖属性调用属性系统 API,则标识符提供对依赖属性的访问权限,尤其是在添加所有者类上存在时。 应使用原始所有者和添加的所有者的相同属性名称来指示类似的功能。 应使用 DependencyProperty 方法的 AddOwner 返回值来定义依赖属性标识符,并声明 CLR 属性包装器,以便为使用 AddOwner的类型添加的依赖属性。

AddOwner在创建在 WPF 中声明的依赖项属性时,将使用上述方法。 例如, BorderControl 定义具有 BorderBrush 类似功能的依赖属性。 Control根据原始所有者Border及其注册的BorderBrushProperty依赖属性标识器调用AddOwnerBorderBrush将其属性定义为属性系统。 AddOwner然后,返回值用于为添加的所有者上的该属性建立一个新的静态DependencyProperty字段 (BorderBrushProperty) ,并且还声明了BorderBrush属性包装器。

适用于

AddOwner(Type, PropertyMetadata)

将其他类型添加为已注册的依赖对象所有者,从而为依赖属性提供依赖属性元数据使其存在于提供的所有者类型上。

public:
 System::Windows::DependencyProperty ^ AddOwner(Type ^ ownerType, System::Windows::PropertyMetadata ^ typeMetadata);
public System.Windows.DependencyProperty AddOwner (Type ownerType, System.Windows.PropertyMetadata typeMetadata);
member this.AddOwner : Type * System.Windows.PropertyMetadata -> System.Windows.DependencyProperty
Public Function AddOwner (ownerType As Type, typeMetadata As PropertyMetadata) As DependencyProperty

参数

ownerType
Type

要作为此依赖属性所有者添加的类型。

typeMetadata
PropertyMetadata

在依赖属性存在于所提供的类型上时对其进行限定的元数据。

返回

DependencyProperty

一个引用,它指向可标识依赖属性的原始 DependencyProperty 标识符。 应通过将类添加为 public static readonly 字段来公开此标识符。

注解

此方法使属性系统能够识别最初未注册该特定依赖属性的类型上的依赖属性。

此方法的返回值用于声明和公开依赖属性,尤其是在添加所有者类上存在时。 通常,应使用原始所有者和添加的所有者的相同属性名称来指示类似的功能。 对于使用 AddOwner的类型添加到类型的依赖项属性,最好公开标识符以及新的 CLR 属性包装器。

AddOwner在 WPF 中声明的 API 时,建议使用上述方法。 例如, BorderControl 定义具有 BorderBrush 类似功能的依赖属性。 Control通过调用AddOwner原始所有者Border及其已注册BorderBrushProperty的依赖属性标识器,将其BorderBrush属性定义为属性系统。 AddOwner然后,返回值用于为添加的所有者上的该属性建立静态DependencyProperty字段 (BorderBrushProperty) ,并且BorderBrush还声明属性包装器。

添加的所有者的依赖属性标识符应用于操作,例如 GetValue。 但是,涉及具有不同元数据的类的类型或实例的类型特定的操作仍将返回预期结果。 即使原始 (不是添加的所有者的) 依赖属性标识符是在调用方法(如 GetValue 或) GetMetadata时指定的,也是如此。 添加的所有者的元数据由 AddOwner 调用本身永久化,不一定由添加所有者类标识符字段独占引用。 不过,对于添加到类型的 AddOwner依赖属性,公开标识符以及新的 CLR 属性包装器是一种很好的做法,因为未能这样做会导致属性的 CLR 和 XAML 表示形式之间存在差异。

提供的元数据与依赖属性的属性元数据合并,因为它存在于基本所有者上。 原始基础元数据中指定的任何特征都将持久保存。 只有新元数据中专门更改的特征才会覆盖基本元数据的特征。 如果新元数据中指定了某些特征,例如 DefaultValue,将替换它们。 其他,例如 PropertyChangedCallback,组合在一起。 最终,合并行为取决于用于替代的属性元数据类型,因此此处介绍的行为适用于 WPF 依赖属性使用的现有属性元数据类。 有关详细信息,请参阅 Dependency 属性元数据框架属性元数据

适用于