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

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

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

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

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

适用于

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

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

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

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

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

适用于