CreateDefaultValueCallback 代理人
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
PropertyMetadata コンストラクターの一部として呼び出して、依存関係プロパティの既定値の定義を延期できるメソッドを表します。
public delegate Platform::Object ^ CreateDefaultValueCallback();
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
class CreateDefaultValueCallback : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
public delegate object CreateDefaultValueCallback();
Public Delegate Function CreateDefaultValueCallback() As Object
戻り値
目的の既定値。
- 属性
Windows の要件
デバイス ファミリ |
Windows 10 (10.0.10240.0 で導入)
|
API contract |
Windows.Foundation.UniversalApiContract (v1.0 で導入)
|
例
この例では、カスタム依存関係プロパティ のシナリオで CreateDefaultValueCallback を使用するための擬似コードを示します。 具体的には、DependencyProperty.Register 呼び出しで使用される PropertyMetadata が作成されます (表示されません)。
PropertyMetadata metadata = PropertyMetadata.Create(
new CreateDefaultValueCallback(() =>
{
return new CustomClass() //a DependencyObject
{
CustomProperty1 = "default", //DependencyProperty of type String
CustomProperty2 = -1; //DependencyProperty of type Int32
}
})
注釈
カスタム依存関係プロパティを登録するときに、依存関係プロパティのすべての使用に既定値を提供するメタデータ ( PropertyMetadata 値) を指定できます。 多くの場合、その値をメタデータに直接即時の値として指定するだけで十分です。 これは、 int 値プロパティに既定値 -1 を指定するなど、任意の値型の値に対して常に機能します。 ただし、 DependencyObject 値などの参照プロパティの既定値を報告する場合は、依存関係プロパティの動作に関連するスレッド処理の問題が発生する可能性があります。 すべての DependencyObject オブジェクトは、常に UI スレッドに作成されます。 ただし、プロパティを登録するスレッドと、最終的に オブジェクトのインスタンスを使用し、既定値へのアクセスを試みるスレッドが同じ UI スレッドではない可能性があります。 固定インスタンスではなく PropertyMetadata に CreateDefaultValueCallback を指定した場合、プロパティの既定値は Just-In-Time で作成され、プロパティを実際に使用しているスレッドによってアクセス可能であることが保証されます。 言い換えると、レジスタとしての プロパティは既定値を遅延させますが、使用されている プロパティはスレッド セーフな既定値を提供できるようになりました。
一般的な CreateDefaultValueCallback では、値として使用される参照型のコンストラクターを呼び出し、その参照型のプロパティを設定してから、それを返す必要があります。
PropertyMetadata インスタンス内で CreateDefaultValueCallback を指定するには、PropertyMetadata コンストラクターではなく、PropertyMetadata.Create を使用してインスタンスを作成する必要があります。