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 默认值的 。 PropertyMetadata然后,在调用 RegisterAttached 时,将 用于附加属性注册。

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 行为时,依赖属性才需要值。 否则,当向依赖属性系统注册依赖属性时,可以为 参数传递 propertyMetadatanull。 有关详细信息,请参阅 DependencyProperty.Register

如果 PropertyMetadata 包含属性更改的回调引用,则该方法必须是公开所应用 DependencyProperty 标识符的 PropertyMetadata 类的静态方法。 自定义 依赖属性 以及 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 值,指定依赖属性的固定默认值和属性更改的回调。

适用于

另请参阅