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 依存関係プロパティによって使用される既存のプロパティ メタデータ クラスに対するものです。 詳細については、「 依存関係プロパティのメタデータ 」と 「フレームワーク プロパティ メタデータ」を参照してください

適用対象

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他の が組み合わされます。 マージ動作は、オーバーライドに使用されるプロパティ メタデータ型によって異なります。 詳細については、「 依存関係プロパティのメタデータ 」と 「フレームワーク プロパティ メタデータ」を参照してください

適用対象