DependencyPropertyKey.DependencyProperty プロパティ


この特殊な読み取り専用依存関係プロパティ識別子に関連付けられている依存関係プロパティ識別子を取得します。Gets the dependency property identifier associated with this specialized read-only dependency property identifier.

 property System::Windows::DependencyProperty ^ DependencyProperty { System::Windows::DependencyProperty ^ get(); };
public System.Windows.DependencyProperty DependencyProperty { get; }
member this.DependencyProperty : System.Windows.DependencyProperty
Public ReadOnly Property DependencyProperty As DependencyProperty


関連する依存関係プロパティ識別子。The relevant dependency property identifier.

次の例でDependencyPropertyは、をDependencyProperty呼び出してAquariumGraphicProperty、クラスのAquariumGraphic読み取り専用の依存関係プロパティの識別子 () を公開しています。The following example calls DependencyProperty to expose the DependencyProperty identifier (AquariumGraphicProperty) for the AquariumGraphic read-only dependency property on a class. この例では、 DependencyPropertyKey (内部メンバーとしての) 作成と、のAquariumGraphicget アクセサーも示しています。The example also shows the DependencyPropertyKey creation (as an internal member) and the get accessor for AquariumGraphic.

internal static readonly DependencyPropertyKey AquariumSizeKey = DependencyProperty.RegisterReadOnly(
  new PropertyMetadata(double.NaN)
public static readonly DependencyProperty AquariumSizeProperty =
public double AquariumSize
  get { return (double)GetValue(AquariumSizeProperty); }
Friend Shared ReadOnly AquariumSizeKey As DependencyPropertyKey = DependencyProperty.RegisterReadOnly("AquariumSize", GetType(Double), GetType(Aquarium), New PropertyMetadata(Double.NaN))
Public Shared ReadOnly AquariumSizeProperty As DependencyProperty = AquariumSizeKey.DependencyProperty
Public ReadOnly Property AquariumSize() As Double
        Return CDbl(GetValue(AquariumSizeProperty))
    End Get
End Property


DependencyProperty値を使用すると、読み取り専用プロパティの識別子が、読み取り/書き込み依存関係プロパティで使用されるものと同じインターフェイスを使用して、共通プロパティシステム操作に参加できます。The DependencyProperty value enables a read-only property's identifier to participate in common property system operations using some of the same interfaces as used for read-write dependency properties.

読み取り専用の依存関係プロパティの get プロパティアクセサーを実装するには、クラスに識別子をDependencyProperty作成して公開する必要があります。In order to implement the get property accessor for a read-only dependency property, you should create and expose a DependencyProperty identifier on your class. これには 2 つの目的があります。This serves two purposes:

  • 独自のクラスにはDependencyProperty 、プロパティラッパーの get アクセサーを実装するための識別子が必要です。Your own class needs the DependencyProperty identifier in order to implement the get accessor for the property wrapper. は、 DependencyProperty get アクセサーを実装するGetValue呼び出しのパラメーターとして使用します。You use the DependencyProperty as a parameter for the GetValue call that implements the get accessor.

  • DependencyProperty識別子は、メタデータに依存する他のメソッドが標準形式でアクセスできるように、依存関係プロパティをプロパティシステムに公開します。DependencyProperty identifiers expose your dependency property to the property system such that other methods that rely on metadata can access it in a standard form. たとえば、何らかGetLocalValueEnumerator DependencyObjectの方法でを呼び出し、ローカルに設定されたプロパティ (値と識別子) の列挙を取得した場合、読み取り専用の依存DependencyProperty関係プロパティに対して返される識別子は、キーではなく値になります。For instance, if you called GetLocalValueEnumerator on some DependencyObject and obtained an enumeration of locally set properties (values and identifiers) the identifier returned for a read-only dependency property would be your DependencyProperty value rather than the key. 識別子をDependencyProperty公開しないと、読み取り専用の依存関係プロパティのセキュリティはどのような方法でも向上しません。これにより、その後の派生クラスとクラスインスタンスの両方で、プロパティに関連する操作が難しくなります。Not exposing a DependencyProperty identifier does not increase the security of your read-only dependency property in any way, it just makes operations that involve your property more awkward both for subsequent derived classes and class instances.

クラスでDependencyProperty識別子を公開するには、キー DependencyPropertyに対して直接を呼び出します。To expose the DependencyProperty identifier on your class, you call DependencyProperty directly on your key. この値を使用してpublic static readonlyDependencyPropertyKeyに対応するクラスのDependencyProperty識別子を作成します。Use this value to create a public static readonlyDependencyProperty identifier on the class, which parallels the DependencyPropertyKey.