DependencyProperty.OverrideMetadata 方法

定義

提供這個相依性屬性出現在所指定類型的執行個體時所要使用的替代中繼資料,相較於初始相依性屬性註冊中所提供的中繼資料。

多載

OverrideMetadata(Type, PropertyMetadata)

當這個相依性屬性出現在所指定類型的執行個體中時,指定其替代中繼資料,並覆寫從基底類型繼承時存在的相依性屬性中繼資料。

OverrideMetadata(Type, PropertyMetadata, DependencyPropertyKey)

當它出現在所指定類型的執行個體,覆寫在初始相依性屬性登錄中所提供的中繼資料時,提供唯讀相依性屬性的替代中繼資料。 您必須傳遞唯讀相依性屬性的 DependencyPropertyKey,以避免引發例外狀況。

OverrideMetadata(Type, PropertyMetadata)

當這個相依性屬性出現在所指定類型的執行個體中時,指定其替代中繼資料,並覆寫從基底類型繼承時存在的相依性屬性中繼資料。

public:
 void OverrideMetadata(Type ^ forType, System::Windows::PropertyMetadata ^ typeMetadata);
public void OverrideMetadata (Type forType, System.Windows.PropertyMetadata typeMetadata);
member this.OverrideMetadata : Type * System.Windows.PropertyMetadata -> unit
Public Sub OverrideMetadata (forType As Type, typeMetadata As PropertyMetadata)

參數

forType
Type

繼承這個相依性屬性,且將套用所提供替代中繼資料的類型。

typeMetadata
PropertyMetadata

要套用至覆寫類型上相依性屬性的中繼資料。

例外狀況

嘗試覆寫唯讀相依性屬性的中繼資料 (無法使用此簽章完成作業)。

已經建立相依性屬性的中繼資料,因為它存在於所提供的類型。

備註

在屬性系統使用相依性屬性之前,應該先覆寫相依性屬性中繼資料。 這相當於使用註冊相依性屬性的 類別建立特定實例的時間。 OverrideMetadata呼叫 應該只在型別的靜態建構函式內執行,以提供本身做為 forType 這個方法的參數,或透過類似的具現化來執行。 嘗試在擁有者類型的實例存在之後變更中繼資料不會引發例外狀況,但會導致屬性系統中的行為不一致。

使用此方法建立特定衍生類別覆寫的中繼資料之後,後續嘗試覆寫相同衍生類別上的中繼資料將會引發例外狀況。

提供的中繼資料會與相依性屬性的屬性中繼資料合併,因為它存在於基底擁有者上。 原始基底中繼資料中指定的任何特性都會保存;只有新中繼資料中特別變更的特性,才會覆寫基底中繼資料的特性。 某些特性,例如 DefaultValue ,如果在新的中繼資料中指定,則會加以取代。 其他專案,例如 PropertyChangedCallback ,會合並。 最後,合併行為取決於用於覆寫的屬性元資料類型,因此此處所述的行為適用于 WPF 相依性屬性所使用的現有屬性中繼資料類別。 如需詳細資訊,請參閱 相依性屬性中繼資料Framework 屬性中繼資料

適用於

OverrideMetadata(Type, PropertyMetadata, DependencyPropertyKey)

當它出現在所指定類型的執行個體,覆寫在初始相依性屬性登錄中所提供的中繼資料時,提供唯讀相依性屬性的替代中繼資料。 您必須傳遞唯讀相依性屬性的 DependencyPropertyKey,以避免引發例外狀況。

public:
 void OverrideMetadata(Type ^ forType, System::Windows::PropertyMetadata ^ typeMetadata, System::Windows::DependencyPropertyKey ^ key);
public void OverrideMetadata (Type forType, System.Windows.PropertyMetadata typeMetadata, System.Windows.DependencyPropertyKey key);
member this.OverrideMetadata : Type * System.Windows.PropertyMetadata * System.Windows.DependencyPropertyKey -> unit
Public Sub OverrideMetadata (forType As Type, typeMetadata As PropertyMetadata, key As DependencyPropertyKey)

參數

forType
Type

繼承這個相依性屬性,且將套用所提供替代中繼資料的類型。

typeMetadata
PropertyMetadata

要套用至覆寫類型上相依性屬性的中繼資料。

key
DependencyPropertyKey

唯讀相依性屬性的存取索引鍵。

備註

此簽章提供唯讀相依性屬性識別碼的基礎實作, (DependencyPropertyKey) 方法。 如果覆寫讀寫相依性屬性的中繼資料,請使用 OverrideMetadata(Type, PropertyMetadata)

在屬性系統使用相依性屬性之前,應該先覆寫相依性屬性中繼資料。 這相當於為註冊相依性屬性的類別建立特定物件的時間。 OverrideMetadata呼叫 應該只在型別的靜態建構函式內執行,以提供本身做為 forType 這個方法的參數,或透過類似的具現化來執行。 嘗試在擁有者類型的實例存在之後變更中繼資料不會引發例外狀況,但會導致屬性系統中的行為不一致。

使用此方法建立特定衍生類別覆寫的中繼資料之後,後續嘗試覆寫相同衍生類別上的中繼資料將會引發例外狀況。

提供的中繼資料會與相依性屬性的屬性中繼資料合併,因為它存在於基底擁有者上。 原始基底中繼資料中指定的任何特性都會保存;只有新中繼資料中特別變更的特性,才會覆寫基底中繼資料的特性。 某些特性,例如 DefaultValue ,如果在新的中繼資料中指定,則會加以取代。 其他專案,例如 PropertyChangedCallback ,會合並。 合併行為取決於用於覆寫的屬性元資料類型。 如需詳細資訊,請參閱 相依性屬性中繼資料Framework 屬性中繼資料

適用於