PropertyMetadata 类

定义

定义依赖属性的行为方面,包括注册该属性的条件。 有关如何将 PropertyMetadata 用于依赖属性的详细信息,请参阅 自定义依赖属性

/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class PropertyMetadata
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class PropertyMetadata
Public Class PropertyMetadata
继承
Object IInspectable PropertyMetadata
属性

Windows 要求

设备系列
Windows 10 (在 10.0.10240.0 中引入)
API contract
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)

示例

此示例调用 PropertyMetadata (Object) 构造函数,该构造函数创建一个报告 DependencyProperty 默认值的 PropertyMetadata。 调用 RegisterAttached 时,PropertyMetadata 将用于附加属性注册。

public abstract class AquariumServices : DependencyObject
{
    public enum Buoyancy {Floats,Sinks,Drifts}

    public static readonly DependencyProperty BuoyancyProperty = DependencyProperty.RegisterAttached(
      "Buoyancy",
      typeof(Buoyancy),
      typeof(AquariumServices),
      new PropertyMetadata(Buoyancy.Floats)
    );
    public static void SetBuoyancy(DependencyObject element, Buoyancy value)
    {
        element.SetValue(BuoyancyProperty, value);
    }
    public static Buoyancy GetBuoyancy(DependencyObject element)
    {
        return (Buoyancy)element.GetValue(BuoyancyProperty);
    }
}
Public Class AquariumServices
    Inherits DependencyObject
    Public Enum Buoyancy
        Floats
        Sinks
        Drifts
    End Enum

    Public Shared ReadOnly BuoyancyProperty As DependencyProperty = _
          DependencyProperty.RegisterAttached(
          "Buoyancy", _
          GetType(Buoyancy), _
          GetType(AquariumServices), _
          New PropertyMetadata(Buoyancy.Floats))


    Public Sub SetBuoyancy(element As DependencyObject, value As Buoyancy)
        element.SetValue(BuoyancyProperty, value)
    End Sub
    Public Function GetBuoyancy(element As DependencyObject) As Buoyancy
        GetBuoyancy = CType(element.GetValue(BuoyancyProperty), Buoyancy)
    End Function
End Class

注解

定义 PropertyMetadata 实例是定义自定义依赖属性方案的一部分。 有关信息和示例,请参阅 自定义依赖属性

PropertyMetadata 值表示依赖属性行为的两个方面:

  • 提供一个默认值,该值用作属性的值,除非所有者类型专门初始化值,或者该值由用户代码或其他机制设置。
  • 引用在依赖属性系统检测到依赖属性已更改时调用的回调。 通常,仅当需要其中一种或两种行为时,依赖属性才需要 PropertyMetadata 值。 否则,当向依赖属性系统注册依赖属性时,可以为 propertyMetadata 参数传递 null 值。 有关详细信息,请参阅 DependencyProperty.Register

如果 PropertyMetadata 包含属性更改的回调引用,该方法必须是公开应用 PropertyMetadata 的 DependencyProperty 标识符的类的静态方法。 自定义 依赖属性 以及 PropertyChangedCallback 委托的参考主题介绍了如何编写此方法。

注意

创建后,PropertyMetadata 实例没有可用于查找回调甚至确定回调方法名称的属性。 该信息被视为依赖属性的实现详细信息,只有依赖属性系统本身才能调用该方法。

实例化 PropertyMetadata 值

有两种方法可以实例化 PropertyMetadata 实例:构造函数和静态 PropertyMetadata.Create 方法。 其中每种方法都有多个签名。 使用构造函数更为常见。 但是,如果希望依赖属性的默认值机制是线程安全的,则必须使用 PropertyMetadata.Create 。 有关详细信息,请参阅自定义依赖属性主题的“ 自定义依赖属性的属性元数据 ”部分。

构造函数

PropertyMetadata(Object)

使用属性默认值初始化 PropertyMetadata 类的新实例。

PropertyMetadata(Object, PropertyChangedCallback)

使用属性默认值和回调引用初始化 PropertyMetadata 类的新实例。

属性

CreateDefaultValueCallback

获取对提供默认属性值的回调方法的引用。

DefaultValue

获取依赖属性的默认值。

方法

Create(CreateDefaultValueCallback)

创建 PropertyMetadata 值,指定为依赖属性建立默认值的回调。

Create(CreateDefaultValueCallback, PropertyChangedCallback)

创建 PropertyMetadata 值,指定为依赖属性建立默认值的回调和属性更改的回调。

Create(Object)

创建 PropertyMetadata 值,为依赖属性指定固定默认值。

Create(Object, PropertyChangedCallback)

创建 PropertyMetadata 值,指定依赖属性的固定默认值和属性更改的回调。

适用于

另请参阅