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

適用対象