DependencyProperty.RegisterAttachedReadOnly 方法

定义

注册只读附加属性。

重载

RegisterAttachedReadOnly(String, Type, Type, PropertyMetadata)

使用指定的属性名称、所有者类型和属性元数据注册只读附加属性。

RegisterAttachedReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback)

使用指定的属性类型、所有者类型、属性元数据和验证回调来注册只读附加属性。

RegisterAttachedReadOnly(String, Type, Type, PropertyMetadata)

使用指定的属性名称、所有者类型和属性元数据注册只读附加属性。

public:
 static System::Windows::DependencyPropertyKey ^ RegisterAttachedReadOnly(System::String ^ name, Type ^ propertyType, Type ^ ownerType, System::Windows::PropertyMetadata ^ defaultMetadata);
public static System.Windows.DependencyPropertyKey RegisterAttachedReadOnly (string name, Type propertyType, Type ownerType, System.Windows.PropertyMetadata defaultMetadata);
static member RegisterAttachedReadOnly : string * Type * Type * System.Windows.PropertyMetadata -> System.Windows.DependencyPropertyKey
Public Shared Function RegisterAttachedReadOnly (name As String, propertyType As Type, ownerType As Type, defaultMetadata As PropertyMetadata) As DependencyPropertyKey

参数

name
String

要注册的依赖属性的名称。

propertyType
Type

属性的类型。

ownerType
Type

正在注册依赖属性的所有者类型。

defaultMetadata
PropertyMetadata

依赖属性的属性元数据。

返回

DependencyPropertyKey

一个依赖属性键,此键应用于设置你的类中静态只读字段的值,该值稍后被用于引用该依赖属性。

注解

此方法返回类型 DependencyPropertyKey,而 RegisterAttached 返回类型 DependencyProperty。 通常,表示只读属性的键不会公开,因为键可用于通过调用 SetValue(DependencyPropertyKey, Object)来设置依赖属性值。 类设计会影响你的要求,但通常建议将任何内容 DependencyPropertyKey 的访问权限和可见性限制为仅将依赖属性设置为类或应用程序逻辑的一部分所需的代码部分。 此外,建议通过公开 DependencyPropertyKey.DependencyProperty 类上作为 public static readonly 字段的值公开只读依赖属性的依赖属性标识符。

只读附加属性是一种罕见的方案,因为附加属性的主要方案是在 XAML 中使用。 如果没有公共 setter,则无法在 XAML 语法中设置附加属性。

有关依赖属性注册的详细信息,请参阅 DependencyProperty

将 RegisterAttached 用于值继承依赖项属性

将依赖属性注册为附加的一个特定方案是支持属性值继承。 即使类定义公开依赖属性的属性包装器访问器,也不应公开 Get* 和 Set* 静态方法以提供真正的附加属性支持访问器,也应注册值继承依赖属性 RegisterAttached 。 尽管属性值继承可能适用于非附加依赖属性,但未定义通过运行时树中某些元素边界的非附加属性的继承行为。 将属性注册为附加实际上会使附加属性成为属性系统的全局属性,并确保属性值继承在元素树中的所有边界上有效。 如果要在元数据中指定 Inherits,请始终使用 RegisterAttached 来注册属性。 有关详细信息,请参阅属性值继承

适用于

RegisterAttachedReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback)

使用指定的属性类型、所有者类型、属性元数据和验证回调来注册只读附加属性。

public:
 static System::Windows::DependencyPropertyKey ^ RegisterAttachedReadOnly(System::String ^ name, Type ^ propertyType, Type ^ ownerType, System::Windows::PropertyMetadata ^ defaultMetadata, System::Windows::ValidateValueCallback ^ validateValueCallback);
public static System.Windows.DependencyPropertyKey RegisterAttachedReadOnly (string name, Type propertyType, Type ownerType, System.Windows.PropertyMetadata defaultMetadata, System.Windows.ValidateValueCallback validateValueCallback);
static member RegisterAttachedReadOnly : string * Type * Type * System.Windows.PropertyMetadata * System.Windows.ValidateValueCallback -> System.Windows.DependencyPropertyKey
Public Shared Function RegisterAttachedReadOnly (name As String, propertyType As Type, ownerType As Type, defaultMetadata As PropertyMetadata, validateValueCallback As ValidateValueCallback) As DependencyPropertyKey

参数

name
String

要注册的依赖属性的名称。

propertyType
Type

属性的类型。

ownerType
Type

正在注册依赖属性的所有者类型。

defaultMetadata
PropertyMetadata

依赖属性的属性元数据。

validateValueCallback
ValidateValueCallback

对用户创建的回调的引用,除了典型的类型验证之外,该引用还应执行依赖属性值的任何自定义验证。

返回

DependencyPropertyKey

一个依赖属性键,应使用它在类中设置静态只读字段的值,然后使用该字段的值引用依赖属性。

注解

此方法返回类型 DependencyPropertyKey,而 RegisterAttached 返回类型 DependencyProperty。 通常,表示类型的 DependencyProperty键。 通常,表示只读属性的键不会公开,因为键可用于通过调用 SetValue(DependencyPropertyKey, Object)来设置依赖属性值。 类设计会影响你的要求,但通常建议将任何内容 DependencyPropertyKey 的访问权限和可见性限制为仅将依赖属性设置为类或应用程序逻辑的一部分所需的代码部分。 此外,建议通过公开 DependencyPropertyKey.DependencyProperty 类上作为 public static readonly 字段的值公开只读依赖属性的依赖属性标识符。

只读附加属性是一种罕见的方案,因为附加属性的主要方案是在 XAML 中使用。 如果没有公共 setter,则无法在 XAML 语法中设置附加属性。

有关依赖属性注册的详细信息,请参阅 DependencyProperty

将 RegisterAttached 用于值继承依赖项属性

将依赖属性注册为附加的一个特定方案,而不是 Register 支持属性值继承。 即使类定义公开依赖属性的属性包装器访问器,也不应公开 Get* 和 Set* 静态方法以提供真正的附加属性支持访问器,也应注册值继承依赖属性 RegisterAttached 。 尽管属性值继承可能适用于非附加依赖属性,但未定义通过运行时树中某些元素边界的非附加属性的继承行为。 将属性注册为附加实际上会使附加属性成为属性系统的全局属性,并确保属性值继承在元素树中的所有边界上有效。 如果要在元数据中指定 Inherits,请始终使用 RegisterAttached 来注册属性。 有关详细信息,请参阅属性值继承

适用于