次の方法で共有


依存関係プロパティを実装する方法 (WPF .NET)

この記事では、DependencyProperty フィールドを使用して共通言語ランタイム (CLR) プロパティをサポートする依存プロパティを実装する方法について説明します。 依存関係プロパティは、いくつかの高度な Windows Presentation Foundation (WPF) プロパティ システム機能をサポートします。 これらの機能には、スタイル、データ バインディング、継承、アニメーション、既定値が含まれます。 これらの機能をサポートするために定義するプロパティが必要な場合は、依存関係プロパティとしてプロパティを実装します。

次の例は、Register メソッドを呼び出して依存関係プロパティを登録する方法を示しています。 Register メソッドは、依存関係プロパティ識別子と呼ばれる DependencyProperty インスタンスを返します。 識別子は static readonly フィールドに格納され、依存関係プロパティの名前と特性を保持します。

識別子フィールドは、名前付け規則の <property name>Propertyに従う必要があります。 たとえば、Locationという名前の依存関係プロパティを登録する場合、識別子フィールドには LocationPropertyという名前を付ける必要があります。 この名前付けパターンに従わないと、WPF デザイナーによってプロパティが正しく報告されず、プロパティ システム スタイル アプリケーションの側面が期待どおりに動作しない可能性があります。

次の例では、依存関係プロパティとその CLR アクセサーの HasFishされているため、識別子フィールドの名前は HasFishPropertyです。 依存関係プロパティの型が Boolean され、依存関係プロパティを登録する所有者の型が Aquarium

依存関係プロパティの既定の メタデータ を指定できます。 次の使用例は、HasFish 依存関係プロパティに既定値の false を設定します。

public class Aquarium : DependencyObject
{
    public static readonly DependencyProperty HasFishProperty =
        DependencyProperty.Register(
            name: "HasFish",
            propertyType: typeof(bool),
            ownerType: typeof(Aquarium),
            typeMetadata: new FrameworkPropertyMetadata(defaultValue: false));

    public bool HasFish
    {
        get => (bool)GetValue(HasFishProperty);
        set => SetValue(HasFishProperty, value);
    }
}
Public Class Aquarium
    Inherits DependencyObject

    Public Shared ReadOnly HasFishProperty As DependencyProperty =
    DependencyProperty.Register(
        name:="HasFish",
        propertyType:=GetType(Boolean),
        ownerType:=GetType(Aquarium),
        typeMetadata:=New FrameworkPropertyMetadata(defaultValue:=False))

    Public Property HasFish As Boolean
        Get
            Return GetValue(HasFishProperty)
        End Get
        Set(value As Boolean)
            SetValue(HasFishProperty, value)
        End Set
    End Property

End Class

CLR プロパティをプライベート フィールドで単にバッキングするのではなく、依存関係プロパティを実装する方法と理由の詳細については、「依存関係プロパティの概要 を参照してください。

関連項目