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) _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)
        {//if not set, revert to base
            this.SupportsMyFeature = mcpm.SupportsMyFeature;
        }
    }
}

注釈

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

注意 (継承者)

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

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

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

適用対象

こちらもご覧ください