バインドのマークアップ拡張機能Binding Markup Extension

プロパティ値をデータバインド値にして、中間式オブジェクトを作成し、実行時に要素とそのバインディングに適用されるデータコンテキストを解釈します。Defers a property value to be a data-bound value, creating an intermediate expression object and interpreting the data context that applies to the element and its binding at run time.

バインディング式の使用法Binding Expression Usage

<object property="{Binding}" .../>  
-or-  
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...  
/>  
-or-  
<object property="{Binding path}" .../>  
-or  
<object property="{Binding path[, bindPropN=valueN]*}" .../>  

構文に関する注意事項Syntax Notes

これらの構文[]では、 *とはリテラルではありません。In these syntaxes, the [] and * are not literals. これらは、0個以上のbindprop=のペアを使用,できることを示す表記の一部であり、これらのペアと前のbindprop=のペアの間に区切り記号が付きます。They are part of a notation to indicate that zero or more bindProp=value pairs can be used, with a , separator between them and preceding bindProp=value pairs.

"バインディング拡張機能で設定できるバインディングプロパティ" セクションに示されているプロパティは、 Bindingオブジェクト要素の属性を使用して設定できます。Any of the properties listed in the "Binding Properties That Can Be Set with the Binding Extension" section could instead be set using attributes of a Binding object element. ただし、これは実際にはのマークアップ拡張Binding機能の使用ではなく、CLR Bindingクラスのプロパティを設定する属性の一般的な XAML 処理にすぎません。However, that is not truly the markup extension usage of Binding, it is just the general XAML processing of attributes that set properties of the CLR Binding class. つまり、 <Binding bindProp1="value1 "[ bindPropN="の値"]*/>の属性と等価の構文は、Bindingオブジェクトの要素の使用方法の代わりに、Binding式の使用。In other words, <Binding bindProp1="value1"[ bindPropN="valueN"]*/> is an equivalent syntax for attributes of Binding object element usage instead of a Binding expression usage. Binding特定のプロパティの xaml 属性の使用方法については、.NET Framework クラスライブラリののBinding関連プロパティの「xaml 属性の使用方法」セクションを参照してください。To learn about the XAML attribute usage of specific properties of Binding, see the "XAML Attribute Usage" section of the relevant property of Binding in the .NET Framework Class Library.

XAML 値XAML Values

bindProp1, bindPropN 設定するプロパティBindingまたはBindingBaseプロパティの名前。The name of the Binding or BindingBase property to set. すべてBindingのプロパティをBinding拡張で設定することはできません。また、一部Bindingのプロパティは、さらに入れ子になったマークアップ拡張機能を使用することによってのみ、式の中で設定できます。Not all Binding properties can be set with the Binding extension, and some properties are settable within a Binding expression only by using further nested markup extensions. 「バインディング拡張機能で設定できるバインディングプロパティ」を参照してください。See "Binding Properties That Can Be Set with the Binding Extension" section.
value1, valueN プロパティに設定する値。The value to set the property to. 属性値の処理は、最終的には、設定される特定Bindingのプロパティの型とロジックに固有です。The handling of the attribute value is ultimately specific to the type and logic of the specific Binding property being set.
path 暗黙的Binding.Pathなプロパティを設定するパス文字列。The path string that sets the implicit Binding.Path property. PROPERTYPATH XAML 構文」も参照してください。See also PropertyPath XAML Syntax.

修飾なし {Binding}Unqualified {Binding}

「バインディング式の使用」に示されているBinding Binding.Path null使用法では、の初期値を含むオブジェクトが既定値で作成されます。 {Binding}The {Binding} usage shown in "Binding Expression Usage" creates a Binding object with default values, which includes an initial Binding.Path of null. これは、作成さBindingれたがランタイムデータコンテキストで設定されているなどBinding.PathのキーデータバインディングBinding.Sourceプロパティに依存している可能性があるため、多くのシナリオで役立ちます。This is still useful in many scenarios, because the created Binding might be relying on key data binding properties such as Binding.Path and Binding.Source being set in the run-time data context. データコンテキストの概念の詳細については、「データバインディング」を参照してください。For more information on the concept of data context, see Data Binding.

暗黙的なパスImplicit Path

マークBindingアップ拡張機能Binding.Pathは、"既定のプロパティ" の概念Path=としてを使用します。ここでは、を式に記述する必要はありません。The Binding markup extension uses Binding.Path as a conceptual "default property", where Path= does not need to appear in the expression. 暗黙的Bindingなパスを使用して式を指定する場合は、 Bindingプロパティが name で指定されている他bindPropのペアの= value前に、暗黙的なパスを式の先頭に記述する必要があります。If you specify a Binding expression with an implicit path, the implicit path must appear first in the expression, prior to any other bindProp=value pairs where the Binding property is specified by name. たとえば{Binding PathString} Binding.Path 、のBindingようになります。は、マークアップ拡張機能の使用によって作成されたの値として評価される文字列です。PathStringFor example: {Binding PathString}, where PathString is a string that is evaluated to be the value of Binding.Path in the Binding created by the markup extension usage. コンマ区切り記号の後に他の名前付きプロパティを含む暗黙のパスを追加{Binding LastName, Mode=TwoWay}できます。たとえば、のようになります。You can append an implicit path with other named properties after the comma separator, for example, {Binding LastName, Mode=TwoWay}.

バインディング拡張機能を使用して設定できるバインディングプロパティBinding Properties That Can Be Set with the Binding Extension

このトピックで示す構文では、一般的bindProp Binding = valueな近似値を使用します。これは、 BindingマークBindingBaseアップ拡張機能を使用して設定できるまたはの読み取り/書き込みプロパティが多数あるためです。式の構文。The syntax shown in this topic uses the generic bindProp=value approximation, because there are many read/write properties of BindingBase or Binding that can be set through the Binding markup extension / expression syntax. 暗黙的Binding.Pathなを除き、任意の順序で設定できます。They can be set in any order, with the exception of an implicit Binding.Path. (を明示的に指定Path=することもできます。この場合、任意の順序で設定できます)。(You do have the option to explicitly specify Path=, in which case it can be set in any order). 基本的に、コンマで区切られたペアを使用してbindProp = value 、以下の一覧の0個以上のプロパティを設定できます。Basically, you can set zero or more of the properties in the list below, using bindProp=value pairs separated by commas.

これらのプロパティ値のいくつかには、XAML のテキスト構文からのネイティブな型変換をサポートしていないオブジェクト型が必要であり、属性値として設定するためにマークアップ拡張機能が必要です。Several of these property values require object types that do not support a native type conversion from a text syntax in XAML, and thus require markup extensions in order to be set as an attribute value. 詳細については、各プロパティの .NET Framework クラスライブラリにある XAML 属性の使用方法に関するセクションを参照してください。XAML 属性構文に使用する文字列は、マークアップ拡張機能の使用を追加しない場合と基本的には、 Binding式で指定した値とほぼ同じです。ただし、それぞれbindProp =に引用符を付けないでください。式内。 value BindingCheck the XAML Attribute Usage section in the .NET Framework Class Library for each property for more information; the string you use for XAML attribute syntax with or without further markup extension usage is basically the same as the value you specify in a Binding expression, with the exception that you do not place quotation marks around each bindProp=value in the Binding expression.

マークアップ拡張機能/ Binding {Binding}式フォームを使用して設定できないのプロパティを次に示します。 BindingThe following are properties of Binding that cannot be set using the Binding markup extension/{Binding} expression form.

  • UpdateSourceExceptionFilter: このプロパティは、コールバックの実装への参照を必要とします。UpdateSourceExceptionFilter: this property expects a reference to a callback implementation. イベントハンドラー以外のコールバック/メソッドは、XAML 構文で参照できません。Callbacks/methods other than event handlers cannot be referenced in XAML syntax.

  • ValidationRules: プロパティは、オブジェクトのValidationRuleジェネリックコレクションを受け取ります。ValidationRules: the property takes a generic collection of ValidationRule objects. これはBinding object 要素の property 要素として表すことができますが、 Binding式で使用するための属性解析手法はすぐに使用できません。This could be expressed as a property element in a Binding object element, but has no readily available attribute-parsing technique for usage in a Binding expression. のリファレンストピックをValidationRules参照してください。See reference topic for ValidationRules.

  • XmlNamespaceManager

RemarksRemarks

重要

依存関係プロパティの優先順位に関しBindingては、式はローカルに設定された値と同じです。In terms of dependency property precedence, a Binding expression is equivalent to a locally set value. 以前に式をBinding持っていたプロパティのローカル値を設定した場合Binding 、は完全に削除されます。If you set a local value for a property that previously had a Binding expression, the Binding is completely removed. 詳細については、「依存関係プロパティ値の優先順位」を参照してください。For details, see Dependency Property Value Precedence.

基本レベルでのデータバインディングの記述については、このトピックでは説明しません。Describing data binding at a basic level is not covered in this topic. データバインディングの概要」を参照してください。See Data Binding Overview.

注意

MultiBindingおよびPriorityBindingでは、拡張XAMLXAML構文はサポートされていません。MultiBinding and PriorityBinding do not support a XAMLXAML extension syntax. 代わりに、プロパティ要素を使用します。You would instead use property elements. MultiBinding およびPriorityBindingのリファレンストピックを参照してください。See reference topics for MultiBinding and PriorityBinding.

XAML のブール値では大文字と小文字が区別されません。Boolean values for XAML are case insensitive. たとえば、または{Binding NotifyOnValidationError=true} {Binding NotifyOnValidationError=True}のいずれかを指定できます。For example you could specify either {Binding NotifyOnValidationError=true} or {Binding NotifyOnValidationError=True}.

データの検証を伴うバインドBindingは、通常、 {Binding ...}式としてではなく明示的な要素ValidatesOnExceptionsによって指定され、式でまたはを設定ValidatesOnDataErrorsすることは珍しくありません。Bindings that involve data validation are typically specified by an explicit Binding element rather than as a {Binding ...} expression, and setting ValidatesOnDataErrors or ValidatesOnExceptions in an expression is uncommon. これは、"コンパニオン" ValidationRulesプロパティを式の形式で簡単に設定できないためです。This is because the companion property ValidationRules cannot be readily set in the expression form. 詳細については、「バインディングの検証の実装」を参照してください。For more information, see Implement Binding Validation.

Binding はマークアップ拡張機能です。Binding is a markup extension. マークアップ拡張機能は、通常、属性値をリテラル値またはハンドラー名以外にエスケープする必要があり、その要件が特定の型またはプロパティに属性が設定された型コンバーターよりもグローバルである場合に実装されます。Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than type converters attributed on certain types or properties. Xaml のすべてのマークアップ拡張{機能}は、属性構文でおよび文字を使用します。これは、マークアップ拡張機能が文字列の内容を処理する必要があることを xaml プロセッサが認識する規則です。All markup extensions in XAML use the { and } characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must process the string contents. 詳細については、「マークアップ拡張機能」および「WPF XAML」を参照してください。For more information, see Markup Extensions and WPF XAML.

Bindingは、WPF の xaml 実装の拡張Binding機能を実装するクラスが xaml に関連しない他のいくつかのメソッドとプロパティも実装することを示す、例外的なマークアップ拡張機能です。Binding is an atypical markup extension in that the Binding class that implements the extension functionality for WPF's XAML implementation also implements several other methods and properties that are not related to XAML. 他のメンバーは、XAML マークBindingアップ拡張機能として機能するだけでなく、多くのデータバインディングシナリオに対応できる、より汎用性のある自己完結型クラスを作成することを目的としています。The other members are intended to make Binding a more versatile and self-contained class that can address many data binding scenarios in addition to functioning as a XAML markup extension.

関連項目See also