PropertyMetadata.IsSealed 屬性

定義

取得值,這個值判斷中繼資料是否已經以某種方式套用至屬性,導致中繼資料執行個體的不可變狀態。

protected:
 property bool IsSealed { bool get(); };
protected bool IsSealed { get; }
member this.IsSealed : bool
Protected ReadOnly Property IsSealed As Boolean

屬性值

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 物件本身初始化之後進行調整。 不過,一旦中繼資料套用至相依性屬性做為呼叫 RegisterAddOwnerOverrideMetadata 的一部分,屬性系統就會密封中繼資料實例和屬性現在視為不可變。 在呼叫其中一個 呼叫時, OnApply 會呼叫 ,而且這個屬性的值會設定為 true

適用於

另請參閱