プロパティ値をデータ バインド値として延期し、中間式オブジェクトを作成し、実行時に要素とそのバインドに適用されるデータ コンテキストを解釈します。
バインド式の使用法
<object property="{Binding}" .../>
-or-
<object property="{Binding bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>
構文に関する注意事項
これらの構文では、 []
と *
はリテラルではありません。 これらは、0 個以上の bindProp=
value ペアを使用できることを示す表記の一部であり、それらのペアと前の ,
=
ペアの間に区切り記号が付いています。
「バインディング拡張で設定できるバインディング プロパティ」セクションに記載されているプロパティは、代わりに、 Binding オブジェクト要素の属性を使用して設定できます。 ただし、これは Bindingのマークアップ拡張の使用方法ではなく、CLR Binding クラスのプロパティを設定する属性の一般的な XAML 処理にすぎません。 言い換えると、<Binding
bindProp1="
value1"[
bindPropN="
valueN"]*/>
は、Binding式の使用ではなく、オブジェクト要素の使用Binding
属性に対して同等の構文です。
Bindingの特定のプロパティの XAML 属性の使用方法については、.NET Framework クラス ライブラリのBindingの関連プロパティの「XAML 属性の使用法」セクションを参照してください。
XAML 値
価値 | 説明 |
---|---|
bindProp1, bindPropN |
設定する Binding または BindingBase プロパティの名前。 すべての Binding プロパティを Binding 拡張機能で設定できるわけではありません。また、一部のプロパティは、入れ子になったマークアップ拡張を使用してのみ、 Binding 式内で設定できます。 「バインディング拡張機能で設定できるバインド プロパティ」セクションを参照してください。 |
value1, valueN |
プロパティを設定する値。 属性値の処理は、最終的には、設定する特定の Binding プロパティの型とロジックに固有です。 |
path |
暗黙的な Binding.Path プロパティを設定するパス文字列。 PropertyPath XAML 構文も参照してください。 |
修飾されていない {Binding}
「バインド式の使用法」に示されている{Binding}
の使用法では、既定値を持つBinding オブジェクトが作成されます。これには、Binding.Pathの初期null
が含まれます。 これは、作成された Binding が実行時データ コンテキストで設定されている Binding.Path や Binding.Source などの主要なデータ バインディング プロパティに依存している可能性があるため、多くのシナリオで引き続き役立ちます。 データ コンテキストの概念の詳細については、「データ バインディング」を参照してください。
暗黙のパス
Binding
マークアップ拡張機能では、Binding.Pathを概念的な "既定のプロパティ" として使用します。ここで、式にPath=
を表示する必要はありません。 暗黙的なパスを持つBinding
式を指定する場合、暗黙的なパスは、bindProp
プロパティが名前で指定されている他の=value
Bindingペアの前に、式の先頭に表示する必要があります。 たとえば、{Binding PathString}
、PathString
は、マークアップ拡張機能の使用によって作成されたBinding.PathのBindingの値として評価される文字列です。 コンマ区切り記号の後に、暗黙的なパスを他の名前付きプロパティ (たとえば、 {Binding LastName, Mode=TwoWay}
) で追加できます。
バインディング拡張機能で設定できるバインド プロパティ
このトピックで示す構文では、bindProp
マークアップ拡張/式構文を使用して設定できる=またはvalue
の読み取り/書き込みプロパティが多数存在するため、一般的なBindingBaseBindingBinding
近似を使用します。 暗黙的な Binding.Pathを除き、任意の順序で設定できます。 ( Path=
を明示的に指定するオプションがあり、その場合は任意の順序で設定できます)。 基本的には、コンマで区切られた bindProp
=value
ペアを使用して、以下の一覧で 0 個以上のプロパティを設定できます。
これらのプロパティ値のいくつかは、XAML のテキスト構文からのネイティブ型変換をサポートしていないオブジェクト型を必要とするため、属性値として設定するためにマークアップ拡張を必要とします。 詳細については、各プロパティの .NET Framework クラス ライブラリの 「XAML 属性の使用法」セクションを参照してください。XAML 属性構文に使用する文字列は、マークアップ拡張を使用する場合と使用しない場合は、基本的にBinding
式で指定した値と同じですが、bindProp
式の各=value
Binding
を引用符で囲む必要はありません。
BindingGroupName: 使用可能なバインディング グループを識別する文字列。 これは比較的高度なバインディングの概念です。 BindingGroupNameのリファレンス ページを参照してください。
BindsDirectlyToSource: ブール値は、
true
またはfalse
のいずれかです。 既定値はfalse
です。Converter: 式で
bindProp
=value
文字列として設定できますが、これを行うには、 StaticResource Markup Extension などの値のオブジェクト参照が必要です。 この場合の値は、カスタム コンバーター クラスのインスタンスです。ConverterCulture: 標準ベースの識別子として式で設定可能です。 ConverterCultureのリファレンス トピックを参照してください。
ConverterParameter: 式では
bindProp
=value
文字列として設定できますが、これは渡されるパラメーターの型によって異なります。 値の参照型を渡す場合、この使用法には、入れ子になった StaticResource マークアップ拡張などのオブジェクト参照が必要です。ElementName は RelativeSource および Source より排他的です。それぞれのバインディング プロパティは、特定のバインディング方法を表します。 「データ バインディングの概要」を参照してください。
FallbackValue: 式では
bindProp
=value
文字列として設定できますが、これは渡される値の型によって異なります。 参照型を渡す場合は、入れ子になった StaticResource マークアップ拡張などのオブジェクト参照が必要です。IsAsync: ブール値は、
true
またはfalse
のいずれかです。 既定値はfalse
です。Mode: value は、 BindingMode 列挙体の定数名です。 たとえば、
{Binding Mode=OneWay}
のようにします。NotifyOnSourceUpdated: ブール値は、
true
またはfalse
のいずれかです。 既定値はfalse
です。NotifyOnTargetUpdated: ブール値は、
true
またはfalse
のいずれかです。 既定値はfalse
です。NotifyOnValidationError: ブール値は、
true
またはfalse
のいずれかです。 既定値はfalse
です。Path: データ オブジェクトまたは一般的なオブジェクト モデルへのパスを記述する文字列。 この形式では、このトピックでは適切に説明できないオブジェクト モデルを走査するためのいくつかの異なる規則が提供されます。 PropertyPath XAML 構文 を参照してください。
RelativeSource: ElementName と Sourceでは相互に排他的です。これらの各バインド プロパティは、特定のバインド手法を表します。 「データ バインディングの概要」を参照してください。 値を指定するには、入れ子になった RelativeSource MarkupExtension を使用する必要があります。
Source は RelativeSource および ElementName より排他的です。それぞれのバインディング プロパティは、特定のバインディング方法を表します。 「データ バインディングの概要」を参照してください。 入れ子になった拡張機能を使用する必要があります。通常は、キー付きリソース ディクショナリのオブジェクト データ ソースを参照する StaticResource Markup Extension です。
StringFormat: バインドされたデータの文字列書式規則を記述する文字列。 これは比較的高度なバインディングの概念です。 StringFormatのリファレンス ページを参照してください。
TargetNullValue: 式では
bindProp
=value
文字列として設定できますが、これは渡されるパラメーターの型によって異なります。 値の参照型を渡す場合は、入れ子になった StaticResource マークアップ拡張などのオブジェクト参照が必要です。UpdateSourceTrigger: value は、 UpdateSourceTrigger 列挙体の定数名です。 たとえば、
{Binding UpdateSourceTrigger=LostFocus}
のようにします。 特定のコントロールでは、このバインディング プロパティの既定値が異なる可能性があります。 UpdateSourceTriggerを参照してください。ValidatesOnDataErrors: ブール値は、
true
またはfalse
のいずれかです。 既定値はfalse
です。 「解説」を参照してください。ValidatesOnExceptions: ブール値は、
true
またはfalse
のいずれかです。 既定値はfalse
です。 「解説」を参照してください。XPath: XML データ ソースの XMLDOM へのパスを記述する文字列。 XMLDataProvider クエリと XPath クエリを使用した XML データへのバインドに関するページを参照してください。
Binding マークアップ拡張/Binding
式フォームを使用して設定できない{Binding}
のプロパティを次に示します。
UpdateSourceExceptionFilter: このプロパティは、コールバック実装への参照を想定しています。 イベント ハンドラー以外のコールバック/メソッドは、XAML 構文では参照できません。
ValidationRules: このプロパティは、 ValidationRule オブジェクトのジェネリック コレクションを受け取ります。 これは、 Binding オブジェクト要素のプロパティ要素として表現できますが、
Binding
式で使用するためにすぐに使用できる属性解析手法はありません。 ValidationRulesのリファレンス トピックを参照してください。
注釈
重要
依存関係プロパティの優先順位の観点から、 Binding
式はローカルに設定された値と同等です。 以前に Binding
式を持つプロパティにローカル値を設定した場合、 Binding
は完全に削除されます。 詳細については、「 依存関係プロパティの値の優先順位」を参照してください。
基本的なレベルでのデータ バインディングの説明については、このトピックでは説明しません。 「データ バインディングの概要」を参照してください。
注
MultiBinding および PriorityBinding は XAML 拡張構文をサポートしていません。 代わりに、プロパティ要素を使用します。 MultiBindingとPriorityBindingのリファレンス トピックを参照してください。
XAML のブール値では、大文字と小文字が区別されません。 たとえば、 {Binding NotifyOnValidationError=true}
または {Binding NotifyOnValidationError=True}
を指定できます。
通常、データ検証に関連するバインドは、Binding
式ではなく明示的な{Binding ...}
要素によって指定され、式でValidatesOnDataErrorsまたはValidatesOnExceptionsを設定することは一般的ではありません。 これは、コンパニオン プロパティ ValidationRules を式形式で簡単に設定できないためです。 詳細については、「 バインド検証の実装」を参照してください。
Binding
はマークアップ拡張機能です。 マークアップ拡張は通常、リテラル値またはハンドラー名以外の属性値をエスケープする必要があり、要件が特定の型またはプロパティに属性付けされた型コンバーターよりもグローバルである場合に実装されます。 XAML のすべてのマークアップ拡張では、属性構文で {
文字と }
文字が使用されます。これは、マークアップ拡張機能が文字列の内容を処理する必要があることを XAML プロセッサが認識する規則です。 詳細については、「マークアップ拡張機能 WPF XAML」を参照してください。
Binding
は、WPF の XAML 実装の拡張機能を実装する Binding クラスが、XAML に関連しない他のいくつかのメソッドとプロパティも実装するという点で、非定型マークアップ拡張です。 他のメンバーは、 Binding XAML マークアップ拡張機能として機能するだけでなく、多くのデータ バインディング シナリオに対処できる、より汎用性の高い自己完結型クラスを作成することを目的としています。
こちらも参照ください
.NET Desktop feedback