PropertyMetadata.Merge(PropertyMetadata, DependencyProperty) メソッド

定義

このメタデータと基本メタデータをマージします。

protected:
 virtual void Merge(System::Windows::PropertyMetadata ^ baseMetadata, System::Windows::DependencyProperty ^ dp);
protected virtual void Merge (System.Windows.PropertyMetadata baseMetadata, System.Windows.DependencyProperty dp);
abstract member Merge : System.Windows.PropertyMetadata * System.Windows.DependencyProperty -> unit
override this.Merge : System.Windows.PropertyMetadata * System.Windows.DependencyProperty -> unit
Protected Overridable Sub Merge (baseMetadata As PropertyMetadata, dp As DependencyProperty)

パラメーター

baseMetadata
PropertyMetadata

このインスタンスの値とマージする基本メタデータ。

dp
DependencyProperty

このメタデータが適用される依存関係プロパティ。

次の例では、プロパティ メタデータに追加のプロパティを追加するカスタム メタデータ型のマージを実装します。

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;
        }
    }
}

注釈

このメソッドは、メタデータがオーバーライドされるときに内部的に使用されます (OverrideMetadata メソッド)。

注意 (継承者)

から PropertyMetadata 派生するクラス実装では、実装で追加したメタデータ プロパティを考慮して、このメソッドをオーバーライドする必要があります。 たとえば、実装で新しいフラグごとの列挙値が追加され、実装で Merge(PropertyMetadata, DependencyProperty) これらのフラグを正しく組み合わせることができる場合があります。

基本実装では、型に既に定義されているすべてのプロパティのマージが処理されるため、実装コードの前に必ず基本実装を PropertyMetadata 呼び出してください。

マージの正確な動作はユーザーの責任です。 値を組み合わせるか、派生メタデータを既定値のままにした場合は基本値に戻すか、特定のメタデータ クラスに追加したプロパティの種類とその意味に基づいて他の多くの動作を選択できます。

適用対象

こちらもご覧ください