DependencyProperty クラス

定義

依存関係プロパティ システムに登録されている依存関係プロパティを表します。 依存関係プロパティは、値式、データ バインディング、アニメーション、およびプロパティ変更通知をサポートします。 DependencyProperty 値が依存関係プロパティの識別子として機能する方法の詳細については、「 依存関係プロパティの概要」を参照してください。

public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyProperty final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyProperty
Public NotInheritable Class DependencyProperty
See Remarks
継承
Object Platform::Object IInspectable DependencyProperty
属性

Windows の要件

デバイス ファミリ
Windows 10 (10.0.10240.0 で導入)
API contract
Windows.Foundation.UniversalApiContract (v1.0 で導入)

この例では、DependencyProperty がクラスのパブリック静的メンバーとして確立される基本的な使用方法を示します。 これを行うには、 Register を 呼び出し、戻り値を クラスのメンバーとして格納します。 その他の例については、「 カスタム依存関係プロパティ」を参照してください。

public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(String),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}
Public Class Fish
    Inherits Control

    Public Shared ReadOnly SpeciesProperty As DependencyProperty = _
    DependencyProperty.Register(
    "Species", _
    GetType(String), _
    GetType(Fish), _
    Nothing)
    Public Property Species As String
        Get
            Species = CType(GetValue(SpeciesProperty), String)
        End Get
        Set(value As String)
            SetValue(SpeciesProperty, value)
        End Set
    End Property
End Class

Visual C++ コンポーネント拡張機能 (C++/CX) の例は、Microsoft .NET の例とは完全に異なる方法で要素化する必要があり、いくつかの異なるコード ファイルを含む必要があるため、ここには示されていません。 カスタム依存関係プロパティの例を参照してください。

注釈

依存関係プロパティの概念については、 依存関係プロパティの概要に関するトピックで詳しく説明します。

DependencyProperty のインスタンスは、多くの場合、依存関係プロパティ識別子としてドキュメントで参照されます。 識別子は、特定の DependencyObject 所有者型に登録された依存関係プロパティを参照する方法を提供します。 所有者の型が プロパティを登録すると、所有者の型は、所有者クラスの静的メンバーである識別子として DependencyProperty インスタンスを公開します。

所有者 DependencyObject は、依存関係プロパティのプロパティ ストアを提供します。 コードで依存関係プロパティを操作する場合は、 SetValue などのプロパティ システム メソッドの呼び出しの入力として DependencyProperty 識別子を使用できます。 ただし、ほとんどの場合、 ラッパーを取得または設定することで、依存関係プロパティを取得または設定する方が簡単です。この概念については、「 依存関係プロパティの概要」を参照してください。

DependencyProperty では、値を入力するための XAML 属性構文のネイティブ変換がサポートされています。これは、 SetterProperty 値を指定するときに使用されます。 この変換では、入力文字列に ownerTypeName**.**propertyName フォームを使用します。

注意

プロパティを名前で指定するためにも使用でき、特定のデータとアニメーション API で必要な関連 構文は、プロパティ パスの構文です。 プロパティ パスを使用すると、プロパティとそのプロパティの値を持つクラスの構造を参照できます。 詳しくは、「Property-path 構文」をご覧ください。

ヒント

Microsoft .NET 言語 (C# または Microsoft Visual Basic) を使用してプログラミングする場合、 TypeName 型は System.Type としてプロジェクトされます。 C# を使用してプログラミングする場合、typeof 演算子を使用して 、型System.Type への参照を取得するのが一般的です。 Microsoft Visual Basic で GetType を使用します。 Visual C++ コンポーネント拡張機能 (C++/CX) を使用している場合は、 TypeName ヘルパー構造体を作成する必要があります。 typeid コンポーネント拡張機能を使用できます。

Windows ランタイムは、DependencyObject に DependencyProperty 識別子とプロパティ ストレージを持つ XAML 添付プロパティ言語機能を実装します。 詳しくは、「添付プロパティの概要」をご覧ください。

カスタム依存関係プロパティ

カスタム型のプロパティで値式、データ バインディング、またはアニメーションをサポートする場合は、次のガイドラインに従って依存関係プロパティを使用してプロパティを戻す必要があります。

  • DependencyProperty を返す Register メソッドを使用して依存関係プロパティを登録します。 これは依存関係プロパティ識別子です。 このオブジェクトは、クラスでアクセス可能な静的読み取り専用プロパティとして公開する必要があります。 慣例により、この DependencyProperty 識別子フィールドの名前は "Property" で終わる必要があります。
  • 登録時に、 プロパティの PropertyMetadata を指定して、プロパティの動作をさらに定義できます。
  • プロパティに get アクセサーと set アクセサーを指定します。これらはプロパティ ラッパーであり、すべての呼び出し元のプロパティへのアクセスを簡略化します。

依存関係プロパティ名への XAML 参照

XAML マークアップで通常設定される一部のプロパティでは、値として DependencyProperty が使用されます。 たとえば、XAML で Setter.Property を 設定します。 XAML でこのようなプロパティを設定するには、依存関係プロパティの名前を属性値として指定します。

Setter.Property の場合、依存関係プロパティ名を参照する型は、Setter が存在する StyleTargetType によって既にスコープが設定されています。 TargetType オブジェクトの依存関係プロパティの場合は、依存関係プロパティの単純な名前を使用して Setter.Property 値を指定できます。 たとえば、Slider をターゲットとする Style があり、Orientation プロパティのスタイルを設定する場合、Property 属性値は単に "Orientation" にすることができます。 また、依存関係プロパティがターゲット型のより深い継承のクラスから取得されている限り、単純な名前も機能します。 たとえば、スライダースタイルVisibility プロパティのスタイルを設定するには、Property 属性値の "Visibility" が機能します。 その場合、 可視性UIElement によって定義されましたが、 Slider に継承されます。

Setter.Property を使用して、添付プロパティ名を参照することもできます。 属性値には、XAML でその添付プロパティを属性として設定する場合と同様 に、AttachedPropertyOwner.AttachedPropertyName という形式を使用します。 たとえば、添付プロパティ AutomationProperties.ItemTypeスタイルに設定する Setter を次に示します。<Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>

注意

依存関係プロパティの名前は、DependencyProperty 静的プロパティ識別子の名前ではありません。 これは、プロパティが登録されている名前文字列と、Microsoft IntelliSense とリファレンス ドキュメントによって公開された場合のWindows ランタイムプログラミングにおけるそのプロパティの一般的な使用名です。 言い換えると、XAML の Setter.Property に指定した文字列を "Property" で終わらせる必要はありません (依存関係プロパティに実際にサフィックス "Property" が含まれているまれなケースを除きます)。

コードでの DependencyProperty (依存関係プロパティ識別子) の使用

DependencyProperty 値を入力パラメーターとして使用するWindows ランタイム プロパティ システムのユーティリティ メソッドには、いくつかのメソッドがあります。 次のようなものが含まれます。

プロパティ

UnsetValue

プロパティが存在するが、プロパティ システムまたはアプリ コードによって値が設定されていないことを示すために null ではなく、プロパティ システムによって使用される静的な値を指定します。

メソッド

GetMetadata(TypeName)

型に登録されている依存関係プロパティのプロパティ メタデータ値を取得します。 情報の取得元の型を型参照として指定します。

Register(String, TypeName, TypeName, PropertyMetadata)

プロパティの指定したプロパティ名、プロパティの種類、所有者の型、およびプロパティ メタデータを使用して依存関係プロパティを登録します。 このメソッドは、登録済みの依存関係プロパティを所有する DependencyObject 派生クラスを定義または初期化するときに使用します。

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

添付された依存関係プロパティを、プロパティのプロパティ名、プロパティの種類、所有者の種類、およびプロパティ メタデータに登録します。

適用対象

こちらもご覧ください