DependencyProperty クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
依存関係プロパティ システムに登録されている依存関係プロパティを表します。 依存関係プロパティは、値式、データ バインディング、アニメーション、およびプロパティ変更通知をサポートします。 DependencyProperty 値が依存関係プロパティの識別子として機能する方法の詳細については、「 依存関係プロパティの概要」を参照してください。
public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
- 継承
- 属性
例
この例では、 が 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); }
}
}
Visual C++ コンポーネント拡張機能 (C++/CX) の例は、Microsoft .NET の例とは完全に異なる方法で考慮する必要があり、いくつかの異なるコード ファイルが含まれるため、ここでは示されていません。 カスタム依存関係プロパティの例を参照してください。
注釈
依存関係プロパティの概念については、「 依存関係プロパティの概要」を参照してください。
の DependencyProperty
インスタンスは、多くの場合、依存関係プロパティ識別子としてドキュメントで参照されます。 識別子は、特定の DependencyObject 所有者型に登録された依存関係プロパティを参照する方法を提供します。 所有者の型が プロパティを登録すると、所有者の型は、所有者クラスの静的メンバーである識別子としてインスタンスを公開 DependencyProperty
します。
所有者 DependencyObject は、依存関係プロパティのプロパティ ストアを提供します。 コードで依存関係プロパティを操作する場合は、SetValue などのプロパティ システム メソッドの呼び出しの入力として識別子を使用DependencyProperty
できます。 ただし、ほとんどの場合、 ラッパーを取得または設定すると、依存関係プロパティの取得または設定が簡単になります。この概念については、「 依存関係プロパティの概要」を参照してください。
DependencyProperty
は、値を入力するための XAML 属性構文のネイティブ変換をサポートしています。これは、 Setter が Property 値を指定するときに使用されます。 この変換では、入力文字列に 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 ランタイムは、識別子とプロパティ ストレージを持つ DependencyProperty
XAML 添付プロパティ言語機能を DependencyObject に実装します。 詳しくは、「添付プロパティの概要」をご覧ください。
カスタム依存関係プロパティ
カスタム型のプロパティで値式、データ バインディング、またはアニメーションをサポートする場合は、次のガイドラインに従って依存関係プロパティを使用してプロパティを戻す必要があります。
-
Register メソッドを使用して依存関係プロパティを登録します。これは を
DependencyProperty
返します。 これは依存関係プロパティ識別子です。 このオブジェクトは、クラスでアクセス可能な静的読み取り専用プロパティとして公開する必要があります。 慣例により、このDependencyProperty
識別子フィールドの名前は "Property" で終わる必要があります。 - 登録時に、 プロパティの PropertyMetadata を指定して、プロパティの動作をさらに定義できます。
- プロパティの
set
と アクセサーを指定get
します。これらはプロパティ ラッパーであり、すべての呼び出し元のプロパティへのアクセスを簡略化します。
依存関係プロパティ名への XAML 参照
XAML マークアップで通常設定される一部のプロパティは、その値として使用 DependencyProperty
されます。 たとえば、XAML で Setter.Property を 設定します。 XAML でこのようなプロパティを設定するには、依存関係プロパティの名前を属性値として指定します。
Setter.Property の場合、依存関係プロパティ名を参照する型は、Setter が存在する Style の TargetType によって既にスコープが設定されています。 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"/>
Note
依存関係プロパティの名前は、静的プロパティ識別子の DependencyProperty
名前ではありません。 これは、プロパティが登録されている名前文字列と、Microsoft IntelliSense とリファレンス ドキュメントによって公開された場合のWindows ランタイムプログラミングにおけるそのプロパティの一般的な使用名です。 言い換えると、XAML の Setter.Property に 指定した文字列が "Property" で終わるのは望まれません (依存関係プロパティに実際にサフィックス "Property" が含まれているまれなケースを除きます)。
コードでの DependencyProperty (依存関係プロパティ識別子) の使用
値を入力パラメーターとして使用DependencyProperty
するWindows ランタイム プロパティ システムのユーティリティ メソッドには、いくつかのメソッドがあります。 これには以下が含まれます。
- DependencyObject.ClearValue
- DependencyObject.GetAnimationBaseValue
- DependencyObject.GetValue
- DependencyObject.ReadLocalValue
- DependencyObject.SetValue
- DependencyPropertyChangedEventArgs.Property
- Setter(DependencyProperty,Object) コンストラクター
プロパティ
UnsetValue |
プロパティが存在することを示すのではなく |
メソッド
GetMetadata(TypeName) |
型に登録されている依存関係プロパティのプロパティ メタデータ値を取得します。 情報の取得元の型を型参照として指定します。 |
Register(String, TypeName, TypeName, PropertyMetadata) |
プロパティの指定したプロパティ名、プロパティの種類、所有者の種類、およびプロパティ メタデータを使用して、依存関係プロパティを登録します。 登録された依存関係プロパティを所有する DependencyObject 派生クラスを定義または初期化する場合は、このメソッドを使用します。 |
RegisterAttached(String, TypeName, TypeName, PropertyMetadata) |
添付された依存関係プロパティを、プロパティの指定されたプロパティ名、プロパティの種類、所有者の型、およびプロパティ メタデータに登録します。 |