Поделиться через


Привязка расширения разметки

Определяет значение свойства как значение с привязкой к данным, создавая объект промежуточного выражения и интерпретируя контекст данных, применяемый к элементу и его привязке во время выполнения.

Использование выражений привязки

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

Примечания по синтаксису

В этих синтаксисах [] и * не являются литералами. Они представляют собой часть нотации, указывающую, что можно использовать любое количество пар свойство_привязки=значение, включая ноль, устанавливая разделитель , между ними и предыдущими парами свойство_привязки=значение.

Вместо этого можно задать любые свойства, перечисленные в разделе "Свойства привязки, которые могут быть установлены с расширением Binding", с помощью атрибутов объектного элемента Binding. Однако в действительности это не использование расширения разметки Binding, это лишь общая обработка XAML атрибутов, задающих свойства класса Binding CLR. Другими словами, <Binding свойство_привязки_1="значение_1"[ свойство_привязки_N="значение_N"]*/> — это эквивалентный синтаксис для использования атрибутов элемента объекта Binding вместо использования выражения Binding. Дополнительные сведения об использовании атрибута XAML с конкретными свойствами Binding см. в разделе "Использование атрибута XAML" для соответствующего свойства Binding в библиотеке классов платформы .NET Framework.

Значения XAML

bindProp1, bindPropN

Имя свойства Binding или BindingBase, которое требуется задать. Не все свойства Binding можно задать с расширением Binding, а некоторые свойства задаются в выражении Binding только с помощью дальнейших вложенных расширений разметки. См. раздел «Свойства привязки, которые могут быть установлены с расширением Binding».

value1, valueN

Значение, задаваемое для свойства. Обработка значения атрибута, в конечном счете, уникальна для типа и логики конкретного задаваемого свойства Binding.

path

Строка пути, задающая неявное свойство Binding.Path. См. также раздел Синтаксис PropertyPath XAML.

Неизвестная {Binding}

При использовании {Binding}, описанном в разделе "Использование выражений привязки", создается объект Binding со значениями по умолчанию, включающими начальное свойство Binding.Path, для которого задано значение null. Это все еще полезно во многих сценариях, поскольку созданный Binding может полагаться на ключевые свойства привязки данных, такие как Binding.Path и Binding.Source, задаваемые в контексте данных времени выполнения. Дополнительные сведения о концепции контекста данных см. в разделе Привязка данных (WPF).

Неявный путь

Расширение разметки Binding использует Binding.Path как концептуальное "свойство по умолчанию", где нет необходимости отображать Path= в выражении. При указании выражения Binding с неявным путем он должен сначала отображаться в выражении до любых других пар bindProp=value, в которых свойство Binding задано по имени. Пример. {Binding PathString}, где PathString — это строка, рассматриваемая как значение свойства Binding.Path в Binding, созданном с помощью расширения разметки. Можно добавить неявный путь с другими именованными свойствами после разделительной запятой, например {Binding LastName, Mode=TwoWay}.

Свойства привязки, которые могут быть установлены с расширением Binding

В приведенном здесь синтаксисе используется обычное приближенное значение bindProp= value, поскольку существует множество предназначенных для чтения и записи свойств BindingBase или Binding, которые можно задать с помощью синтаксиса выражения и расширения разметки Binding. Их можно задать в любом порядке, за исключением неявного свойства Binding.Path. (Имеется возможность явно задать Path=, при этом его также можно задать в любом порядке.) По существу, можно задать любое количество свойств, включая ноль, в списке ниже, используя пары bindProp=value, разделенные запятыми.

Некоторым из этих значений свойств требуются типы объектов, не поддерживающие собственное преобразование типов из текстового синтаксиса в XAML, то есть требуется задание расширений разметки в качестве значения атрибута. Дополнительные сведения о каждом свойстве см. в разделе "Использование атрибута XAML" в библиотеке классов платформы .NET Framework. Строка, используемая для синтаксиса атрибута XAML с дальнейшим использованием расширения разметки или без него, по существу, аналогична значению, задаваемому в выражении Binding, за исключением того, что кавычки вокруг каждой пары bindProp=value в выражении Binding не вставляются.

  • BindingGroupName. Строка, определяющая возможную группу привязки. Это относительно новое понятие привязки. Дополнительные сведения по свойству BindingGroupName см. на странице ссылок.

  • BindsDirectlyToSource. Логическое свойство, которому может быть присвоено как значение true, так и false. Значение по умолчанию — false.

  • Converter. Можно задать как строку bindProp=value в выражении, но для этого требуется ссылка на объект для значения, например Расширение разметки StaticResource. Значение в данном случае является экземпляром класса пользовательского преобразователя.

  • ConverterCulture. Можно задать в выражении в качестве стандартного идентификатора. Дополнительные сведения по свойству ConverterCulture см. в справочном разделе.

  • ConverterParameter. Можно задать как строку bindProp=value в выражении, но это зависит от типа передаваемого параметра. При передаче типа по ссылке для значения для такого использования требуется ссылка на объект, например вложенный Расширение разметки StaticResource.

  • ElementName: взаимоисключающее с RelativeSource и Source; каждое из этих свойств привязки представляет определенную методологию привязки. См. раздел Общие сведения о связывании данных.

  • FallbackValue. Можно задать как строку bindProp=value в выражении, но это зависит от типа передаваемого значения. При передаче типа по ссылке требуется ссылка на объект, например вложенный Расширение разметки StaticResource.

  • IsAsync. Логическое свойство, которому может быть присвоено как значение true, так и false. Значение по умолчанию — false.

  • Mode. значение является именем константы из перечисления BindingMode. Например, {Binding Mode=OneWay}.

  • NotifyOnSourceUpdated. Логическое свойство, которому может быть присвоено как значение true, так и false. Значение по умолчанию — false.

  • NotifyOnTargetUpdated. Логическое свойство, которому может быть присвоено как значение true, так и false. Значение по умолчанию — false.

  • NotifyOnValidationError. Логическое свойство, которому может быть присвоено как значение true, так и false. Значение по умолчанию — false.

  • Path. Строка, описывающая путь к объекту данных или общей объектной модели. Формат предоставляет несколько разных соглашений для обхода объектной модели, для которой не приводится соответствующего описания в этом разделе. См. раздел Синтаксис PropertyPath XAML.

  • RelativeSource: взаимоисключает свойства ElementName и Source; каждое из этих свойств привязки представляет определенную методологию привязки. См. раздел Общие сведения о связывании данных. Требует использование вложенного Расширение разметки RelativeSource для задания значения.

  • Source: взаимоисключающее с RelativeSource и ElementName; каждое из этих свойств привязки представляет определенную методологию привязки. См. раздел Общие сведения о связывании данных. Требует использование вложенного расширения, как правило, Расширение разметки StaticResource, относящегося к источнику данных объекта из словаря ресурсов с ключом.

  • StringFormat. Строка, описывающая соглашение формата строки для связанных данных. Это относительно новое понятие привязки. Дополнительные сведения по свойству StringFormat см. на странице ссылок.

  • TargetNullValue. Можно задать как строку bindProp=value в выражении, но это зависит от типа передаваемого параметра. При передаче типа по ссылке для значения требуется ссылка на объект, например вложенный Расширение разметки StaticResource.

  • UpdateSourceTrigger. значение является именем константы из перечисления UpdateSourceTrigger. Например, {Binding UpdateSourceTrigger=LostFocus}. Потенциально определенные элементы управления имеют разные значения по умолчанию для этого свойства привязки. См. раздел UpdateSourceTrigger.

  • ValidatesOnDataErrors. Логическое свойство, которому может быть присвоено как значение true, так и false. Значение по умолчанию — false. См. примечания.

  • ValidatesOnExceptions. Логическое свойство, которому может быть присвоено как значение true, так и false. Значение по умолчанию — false. См. примечания.

  • XPath. Строка, описывающая путь к XMLDOM источника данных XML. См. раздел Практическое руководство. Привязка к данным xml с помощью XMLDataProvider и запросов XPath.

Ниже перечислены свойства Binding, которые невозможно задать с помощью расширения разметки Binding/формы выражения {Binding}.

  • UpdateSourceExceptionFilter: это свойство ожидает ссылку на реализацию обратного вызова. На обратные вызовы и методы, отличные от обработчиков событий, нельзя ссылаться в синтаксисе XAML.

  • ValidationRules. Принимает универсальную коллекцию объектов ValidationRule. Это можно выразить как элемент свойства в объектном элементе Binding, но метод разбора атрибута для использования в выражении Binding, доступный сразу, отсутствует. См. раздел справки, посвященный ValidationRules.

  • XmlNamespaceManager

Заметки

Важное примечаниеВажно

В отношении приоритета свойств зависимостей выражение Binding эквивалентно локальному заданному значению.Если установить локальное значение для свойства, в котором ранее имелось выражение Binding, то Binding полностью удаляется.Дополнительные сведения см. в разделе Приоритет значения свойств зависимостей.

Описание привязки данных на базовом уровне не рассматривается в этом разделе. См. раздел Общие сведения о связывании данных.

ПримечаниеПримечание

MultiBinding и PriorityBinding не поддерживают синтаксис расширения XAML. Вместо этого используйте элементы свойств.См. разделы справки, посвященные MultiBinding и PriorityBinding.

Логические значения для XAML нечувствительные к реестру. Например, можно указать либо {Binding NotifyOnValidationError=true}, либо {Binding NotifyOnValidationError=True}.

Привязки, задействующие проверку данных, обычно задаются явным элементом Binding, а не как выражение {Binding ...}, а установка в качестве значений свойств ValidatesOnDataErrors или ValidatesOnExceptions выражений встречается редко. Это происходит потому, что сопутствующее свойство ValidationRules нельзя без труда задать в форме выражения. Дополнительные сведения см. в разделе Практическое руководство. Реализация проверки привязки.

Binding является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется больше, чем установка атрибутов преобразователей типов для определенных типов или свойств. Все расширения разметки в XAML используют знаки { и } в синтаксисе своих атрибутов, который является соглашением, по которому обработчик XAML узнает, что расширение разметки должно обработать содержимое строки. Дополнительные сведения см. в разделе Расширения разметки и XAML WPF.

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

См. также

Ссылки

Binding

Основные понятия

Общие сведения о связывании данных

Общие сведения о языке XAML (WPF)

Расширения разметки и XAML WPF