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 标识符。 应通过将类添加为 public static readonly 字段来公开此标识符。

注解

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

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

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

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

创建 AddOwner 在 WPF 中声明的依赖属性时,将使用上面建议的方法。 例如, 和 都Border定义了一个BorderBrush具有类似功能的依赖Control属性。 Control通过基于原始所有者Border及其注册BorderBrushProperty的依赖属性标识符调用 AddOwner 来定义属性BorderBrush系统的属性。 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 标识符。 应通过将类添加为 public static readonly 字段来公开此标识符。

注解

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

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

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

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

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

适用于