DependencyProperty.RegisterReadOnly 方法

定义

将依赖属性注册为只读依赖属性。

重载

RegisterReadOnly(String, Type, Type, PropertyMetadata)

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

RegisterReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback)

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

RegisterReadOnly(String, Type, Type, PropertyMetadata)

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

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

参数

name
String

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

propertyType
Type

属性的类型。

ownerType
Type

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

typeMetadata
PropertyMetadata

依赖属性的属性元数据。

返回

DependencyPropertyKey

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

示例

以下示例将 AquariumSize 依赖属性注册为只读。 该示例定义为 AquariumSizeKey 内部键 (,以便程序集中的其他类可以替代元数据) 并基于该键 AquariumSizeProperty公开依赖属性标识符。 此外,会为 AquariumSize仅获取访问器创建包装器。

internal static readonly DependencyPropertyKey AquariumSizeKey = DependencyProperty.RegisterReadOnly(
  "AquariumSize",
  typeof(double),
  typeof(Aquarium),
  new PropertyMetadata(double.NaN)
);
public static readonly DependencyProperty AquariumSizeProperty =
  AquariumSizeKey.DependencyProperty;
public double AquariumSize
{
  get { return (double)GetValue(AquariumSizeProperty); }
}
Friend Shared ReadOnly AquariumSizeKey As DependencyPropertyKey = DependencyProperty.RegisterReadOnly("AquariumSize", GetType(Double), GetType(Aquarium), New PropertyMetadata(Double.NaN))
Public Shared ReadOnly AquariumSizeProperty As DependencyProperty = AquariumSizeKey.DependencyProperty
Public ReadOnly Property AquariumSize() As Double
    Get
        Return CDbl(GetValue(AquariumSizeProperty))
    End Get
End Property

注解

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

只读依赖属性是现有 API 和自定义方案中相当典型的方案,因为其他 WPF 功能可能需要依赖属性,即使该属性不是由调用方设置的。 可以使用只读依赖属性的值作为采用依赖属性的其他属性系统操作的基础,例如 Trigger 基于样式中的依赖属性。

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

适用于

RegisterReadOnly(String, Type, Type, PropertyMetadata, ValidateValueCallback)

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

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

参数

name
String

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

propertyType
Type

属性的类型。

ownerType
Type

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

typeMetadata
PropertyMetadata

依赖属性的属性元数据。

validateValueCallback
ValidateValueCallback

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

返回

DependencyPropertyKey

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

注解

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

只读依赖项属性是一种相当典型的方案。 可以使用只读依赖属性的值作为采用依赖属性的其他属性系统操作的基础,例如 Trigger 基于样式中的依赖属性。

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

对只读依赖属性的验证可能不太重要。 为密钥指定的非公共访问级别可以减少任意无效输入的可能性。

适用于