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