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


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

Обновлен: Ноябрь 2007

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

Использование атрибута XAML

<object property="{Binding}" .../>

либо

<object property="{Binding  bindingPropertyName1=value,
  bindingPropertyName2=value,
  bindingPropertyNameN=value}" ...
/>

Использование элемента объекта XAML

<object>
  <object.property>
    <Binding/>
  </object.property>
</object>

либо

<object>
  <object.property>
    <Binding      bindingPropertyName1="value"
      bindingPropertyName2="value"
      bindingPropertyNameN="value"
    />
  </object.property>
</object>

Любое из перечисленных ниже свойств, которое должно быть задано в качестве пары «свойство=значение» в примере синтаксиса атрибута, можно задать в качестве атрибутов элемента Binding, как определено в синтаксисе элемента объекта.

Значения XAML

bindingPropertyName#

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

value

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

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

В приведенном здесь синтаксисе используется обычная аппроксимация bindingPropertyName= value, поскольку существует множество предназначенных для чтения и записи свойств BindingBase или Binding, которые можно задать с помощью синтаксиса расширения разметки Binding. Они могут задаваться в любом порядке. По существу, можно задать ноль или больше свойств в расположенном ниже списке, используя пары «свойство=значение», отделенные запятыми.

Некоторым из этих значений свойств требуются типы объектов, не поддерживающие собственное преобразование типов, то есть требуется задание дальнейшего использования расширения разметки в XAML в качестве значения атрибута. Чтобы определить правильный синтаксис атрибута, см. раздел, посвященный использованию атрибутов XAML для каждого свойства.

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

Заметки

Представленные здесь местозаполнители bindingPropertyName соответствуют именам некоторых объявленных задаваемых свойств класса Binding, а строки значений определяют, как эти значения свойств будут задаваться в качестве атрибута XAML в свойстве Binding, объявленном как элемент XAML.

Здесь не рассматривается понятие привязки данных; основные понятия см. в разделе Общие сведения о связывании данных, а дополнительные сведения об альтернативном синтаксисе см. в разделе Общие сведения об объявлении привязок. Обсуждение альтернативного синтаксиса включает способы создания эквивалентных привязок по числу возможных синтаксисов, таких как свойства атрибута элемента объекта Binding в XAML, синтаксис элемента свойства в Binding или процедуру создания привязки с помощью SetBinding или конструктора Binding.

ms750413.alert_caution(ru-ru,VS.90).gifВажное примечание.

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

ms750413.alert_note(ru-ru,VS.90).gifПримечание.

MultiBinding и PriorityBinding не поддерживают синтаксис расширения XAML (несмотря на совместное использование класса BindingBase, который фактически реализует поведение XAML для Binding).

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

См. также

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

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

Общие сведения об объявлении привязок

Общие сведения о XAML

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

Ссылки

Binding