PropertyMetadata.IsSealed 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取一个值,该值确定是否已通过某种方式将元数据应用于属性,从而导致该元数据实例变为不可变状态。
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
。