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
- Наследование
- Атрибуты
Требования к 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 , указывая фиксированное значение по умолчанию для свойства зависимостей и обратный вызов, измененный свойством. |