依存関係プロパティを実装する方法 (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