Привязка расширения разметки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. Они являются частью нотации для указания того, что можно использовать ноль или более пар биндпроп=значений , с , разделителем между ними и предшествующими биндпроп=ными парами значений .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использования расширения разметки, это просто общая обработка XAML атрибутов, устанавливающих свойства Binding класса CLR.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="значение1"[ биндпропн="Контрольное"]*/> — это эквивалентный синтаксис для атрибутов 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. Дополнительные сведения об использовании атрибутов XAML для конкретных свойств Bindingсм. в разделе "использование атрибутов XAML" соответствующего свойства Binding в библиотеке классов .NET Framework.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.

Значения XAMLXAML 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 со значениями по умолчанию, которые включают начальную Binding.Path null.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 выражение с неявным путем, то перед любыми другими bindProp=value пары, в которых свойство Binding задано по имени, в выражении должен стоять неявный путь.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}, где PathString — это строка, которая вычисляется как значение Binding.Path в Binding, созданное с использованием расширения разметки.For 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=value аппроксимации, так как существует множество свойств для чтения и записи BindingBase или Binding, которые можно задать с помощью синтаксиса Binding разметки/выражения.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 пары, разделенные запятыми.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. Дополнительные сведения см. в разделе Использование атрибутов XAML в библиотеке классов .NET Framework для каждого свойства. Строка, используемая для синтаксиса атрибута XAML с дальнейшим использованием расширения разметки, по сути аналогична значению, указанному в Binding выражении, за исключением того, что кавычки вокруг каждого bindProp=value в выражение Binding.Check 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.

  • BindingGroupName: строка, определяющая возможную группу привязки.BindingGroupName: a string that identifies a possible binding group. Это относительно сложная концепция привязки. BindingGroupNameсм. на странице справки.This is a relatively advanced binding concept; see reference page for BindingGroupName.

  • BindsDirectlyToSource: Boolean, может иметь значение true или false.BindsDirectlyToSource: Boolean, can be either true or false. Значение по умолчанию: false.The default is false.

  • Converter: можно задать в качестве bindProp=строки value в выражении, но для этого требуется ссылка на объект для значения, например расширение разметки StaticResource.Converter: can be set as a bindProp=value string in the expression, but to do so requires an object reference for the value, such as a StaticResource Markup Extension. Значение в этом случае является экземпляром пользовательского класса преобразователя.The value in this case is an instance of a custom converter class.

  • ConverterCulture: устанавливаемое в выражении как идентификатор на основе стандартов; см. раздел справки по ConverterCulture.ConverterCulture: settable in the expression as a standards-based identifier; see the reference topic for ConverterCulture.

  • ConverterParameter: можно задать в качестве bindProp=value строку в выражении, но это зависит от типа передаваемого параметра.ConverterParameter: can be set as a bindProp=value string in the expression, but this is dependent on the type of the parameter being passed. При передаче ссылочного типа для значения для этого использования требуется ссылка на объект, например вложенное расширение разметки StaticResource.If passing a reference type for the value, this usage requires an object reference such as a nested StaticResource Markup Extension.

  • ElementName: взаимоисключающее и RelativeSource и Source; Каждое из этих свойств привязки представляет конкретную методологию привязки.ElementName: mutually exclusive versus RelativeSource and Source; each of these binding properties represents a particular binding methodology. См. раздел Общие сведения о привязке данных.See Data Binding Overview.

  • FallbackValue: можно задать в качестве bindProp=value строку в выражении, но это зависит от типа передаваемого значения.FallbackValue: can be set as a bindProp=value string in the expression, but this is dependent on the type of the value being passed. При передаче ссылочного типа требуется ссылка на объект, например вложенное расширение разметки StaticResource.If passing a reference type, requires an object reference such as a nested StaticResource Markup Extension.

  • IsAsync: Boolean, может иметь значение true или false.IsAsync: Boolean, can be either true or false. Значение по умолчанию: false.The default is false.

  • Mode: value — это имя константы из перечисления BindingMode.Mode: value is a constant name from the BindingMode enumeration. Например, {Binding Mode=OneWay}.For example, {Binding Mode=OneWay}.

  • NotifyOnSourceUpdated: Boolean, может иметь значение true или false.NotifyOnSourceUpdated: Boolean, can be either true or false. Значение по умолчанию: false.The default is false.

  • NotifyOnTargetUpdated: Boolean, может иметь значение true или false.NotifyOnTargetUpdated: Boolean, can be either true or false. Значение по умолчанию: false.The default is false.

  • NotifyOnValidationError: Boolean, может иметь значение true или false.NotifyOnValidationError: Boolean, can be either true or false. Значение по умолчанию: false.The default is false.

  • Path: строка, описывающая путь к объекту данных или общей объектной модели.Path: a string that describes a path into a data object or a general object model. Формат предоставляет несколько различных соглашений для обхода объектной модели, которые не могут быть надлежащим образом описаны в этом разделе.The format provides several different conventions for traversing an object model that cannot be adequately described in this topic. См. раздел синтаксис языка XAML PropertyPath.See PropertyPath XAML Syntax.

  • RelativeSource: взаимоисключающее и с ElementName и Source; Каждое из этих свойств привязки представляет конкретную методологию привязки.RelativeSource: mutually exclusive versus with ElementName and Source; each of these binding properties represents a particular binding methodology. См. раздел Общие сведения о привязке данных.See Data Binding Overview. Для указания значения требуется вложенное использование RelativeSource MarkupExtension .Requires a nested RelativeSource MarkupExtension usage to specify the value.

  • Source: взаимоисключающее и RelativeSource и ElementName; Каждое из этих свойств привязки представляет конкретную методологию привязки.Source: mutually exclusive versus RelativeSource and ElementName; each of these binding properties represents a particular binding methodology. См. раздел Общие сведения о привязке данных.See Data Binding Overview. Требует вложенного расширения, обычно это расширение разметки StaticResource , которое ссылается на источник данных объекта из словаря ресурсов с ключом.Requires a nested extension usage, typically a StaticResource Markup Extension that refers to an object data source from a keyed resource dictionary.

  • StringFormat: строка, описывающая соглашение о формате строки для привязанных данных.StringFormat: a string that describes a string format convention for the bound data. Это относительно сложная концепция привязки. StringFormatсм. на странице справки.This is a relatively advanced binding concept; see reference page for StringFormat.

  • TargetNullValue: можно задать в качестве bindProp=value строку в выражении, но это зависит от типа передаваемого параметра.TargetNullValue: can be set as a bindProp=value string in the expression, but this is dependent on the type of the parameter being passed. При передаче ссылочного типа для значения требуется ссылка на объект, например вложенное расширение разметки StaticResource.If passing a reference type for the value, requires an object reference such as a nested StaticResource Markup Extension.

  • UpdateSourceTrigger: value — это имя константы из перечисления UpdateSourceTrigger.UpdateSourceTrigger: value is a constant name from the UpdateSourceTrigger enumeration. Например, {Binding UpdateSourceTrigger=LostFocus}.For example, {Binding UpdateSourceTrigger=LostFocus}. Определенные элементы управления потенциально имеют разные значения по умолчанию для этого свойства привязки.Specific controls potentially have different default values for this binding property. См. раздел UpdateSourceTrigger.See UpdateSourceTrigger.

  • ValidatesOnDataErrors: Boolean, может иметь значение true или false.ValidatesOnDataErrors: Boolean, can be either true or false. Значение по умолчанию: false.The default is false. См. заметки.See Remarks.

  • ValidatesOnExceptions: Boolean, может иметь значение true или false.ValidatesOnExceptions: Boolean, can be either true or false. Значение по умолчанию: false.The default is false. См. заметки.See Remarks.

  • XPath: строка, описывающая путь к XMLDOM источника XML-данных.XPath: a string that describes a path into the XMLDOM of an XML data source. См. статью Привязка к XML-данным с помощью XmlDataProvider и запросов XPath.See Bind to XML Data Using an XMLDataProvider and XPath Queries.

Ниже приведены свойства Binding, которые не могут быть заданы с помощью формы выражения расширения разметки Binding/{Binding}.The 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 элементе объекта, но в выражении 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

ЗаметкиRemarks

Важно!

В плане приоритета свойства зависимости 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 ...} выражением, и установка ValidatesOnDataErrors или ValidatesOnExceptions в выражении является редким.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. Дополнительные сведения см. в разделе Расширения разметки и XAML WPF.For more information, see Markup Extensions and WPF XAML.

Binding является нетипичным расширением разметки в том, что класс Binding, реализующий функциональность расширения для реализации XAML в WPF, также реализует несколько других методов и свойств, не связанных с 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. Другие члены предназначены для того, чтобы Binding более гибким и автономным классом, который может решить многие сценарии привязки данных в дополнение к работе в качестве расширения разметки XAML.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