依存関係プロパティを実装する方法 (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 プロパティをプライベート フィールドで単にバッキングするのではなく、依存関係プロパティを実装する方法と理由の詳細については、「依存関係プロパティの概要 を参照してください。
関連項目
.NET Desktop feedback