PropertyMetadata.IsSealed Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение, определяющее, были ли применены метаданные к свойству, что привело к запрету изменений экземпляра метаданных.
protected:
property bool IsSealed { bool get(); };
protected bool IsSealed { get; }
member this.IsSealed : bool
Protected ReadOnly Property IsSealed As Boolean
Значение свойства
true
, если экземпляр метаданных не подлежит изменениям; в противном случае — false
.
Примеры
В следующем примере выполняется проверка IsSealed перед операцией набора настраиваемого свойства метаданных.
public Boolean SupportsMyFeature
{
get { return _supportsMyFeature; }
set { if (this.IsSealed != true) _supportsMyFeature = value; } //else may want to raise exception
}
protected override void Merge(PropertyMetadata baseMetadata, DependencyProperty dp)
{
base.Merge(baseMetadata, dp);
MyCustomPropertyMetadata mcpm = baseMetadata as MyCustomPropertyMetadata;
if (mcpm != null)
{
if (this.SupportsMyFeature == false)
{//if not set, revert to base
this.SupportsMyFeature = mcpm.SupportsMyFeature;
}
}
}
Комментарии
Различные свойства PropertyMetadata, например DefaultValue, определяются в объектной модели как чтение и запись. Это позволяет настроить эти свойства после инициализации PropertyMetadata самого объекта. Однако после применения метаданных к свойству зависимостей в рамках вызова RegisterAddOwnerили OverrideMetadataсистемы свойств запечатывается, что экземпляр метаданных и свойства теперь считаются неизменяемыми. Во время одного из этих вызовов OnApply вызывается, а для значения этого свойства задано true
значение .