PropertyMetadata 类

定义

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

/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
属性

示例

此示例调用 PropertyMetadata(Object) 构造函数,该构造函数创建一个 PropertyMetadata,用于报告 DependencyProperty的默认值。 然后,调用 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);
    }
}

注解

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

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

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

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

注意

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

实例化 PropertyMetadata 值

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

构造函数

PropertyMetadata(Object, PropertyChangedCallback)

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

PropertyMetadata(Object)

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

属性

CreateDefaultValueCallback

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

DefaultValue

获取依赖属性的默认值。

方法

Create(CreateDefaultValueCallback, PropertyChangedCallback)

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

Create(CreateDefaultValueCallback)

创建 PropertyMetadata 值,并指定一个回调,用于为依赖属性建立默认值。

Create(Object, PropertyChangedCallback)

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

Create(Object)

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

适用于

另请参阅