Поделиться через


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), который создает 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);
    }
}
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 содержит ссылку обратного вызова, измененную свойством, этот метод должен быть статическим методом класса , предоставляющим идентификатор 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 , указывая фиксированное значение по умолчанию для свойства зависимостей и обратный вызов, измененный свойством.

Применяется к

См. также раздел