Привязка расширения разметки
Обновлен: Ноябрь 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 для каждого свойства.
BindsDirectlyToSource: тип bool, может принимать значение true или false.
Converter: может задаваться в XAML, но для этого требуется ссылка на объект, например Расширение разметки StaticResource.
ConverterCulture: может задаваться в качестве стандартного идентификатора; см. ссылку для ConverterCulture.
ConverterParameter: при передаче типа по ссылке требуется ссылка на объект, например Расширение разметки StaticResource.
ElementName: взаимоисключает варианты RelativeSource, Source; каждое из этих свойств представляет определенный метод привязки. См. раздел Общие сведения о связывании данных.
FallbackValue: при передаче типа по ссылке требуется ссылка на объект, например Расширение разметки StaticResource.
RelativeSource: взаимоисключает варианты ElementName, Source; каждое из этих свойств представляет определенный метод привязки. См. раздел Общие сведения о связывании данных. Требуется использование Расширение разметки RelativeSource.
Source: взаимоисключает варианты RelativeSource, ElementName; каждое из этих свойств представляет определенный метод привязки. См. раздел Общие сведения о связывании данных. Требуется ссылка на объект, например Расширение разметки StaticResource.
Ниже перечислены свойства Binding, которые невозможно задать с помощью расширения разметки Binding.
Заметки
Представленные здесь местозаполнители bindingPropertyName соответствуют именам некоторых объявленных задаваемых свойств класса Binding, а строки значений определяют, как эти значения свойств будут задаваться в качестве атрибута XAML в свойстве Binding, объявленном как элемент XAML.
Здесь не рассматривается понятие привязки данных; основные понятия см. в разделе Общие сведения о связывании данных, а дополнительные сведения об альтернативном синтаксисе см. в разделе Общие сведения об объявлении привязок. Обсуждение альтернативного синтаксиса включает способы создания эквивалентных привязок по числу возможных синтаксисов, таких как свойства атрибута элемента объекта Binding в XAML, синтаксис элемента свойства в Binding или процедуру создания привязки с помощью SetBinding или конструктора Binding.
Важное примечание. |
---|
В терминах приоритета свойства зависимостей выражение Binding эквивалентно локальному заданию значения. Если установить локальное значение для свойства, в котором ранее имелось выражение Binding, то Binding полностью удаляется. Дополнительные сведения см. в разделе Приоритет значения свойств зависимостей. |
Примечание. |
---|
MultiBinding и PriorityBinding не поддерживают синтаксис расширения XAML (несмотря на совместное использование класса BindingBase, который фактически реализует поведение XAML для Binding). |
Binding является расширением разметки. Расширения разметки обычно реализуются, если требуется заменить значения атрибутов на нелитеральные значения или имена обработчиков и если требуется больше, чем простая настройка преобразователей типов на работу с определенными типами или свойствами. Все расширения разметки в XAML используют символы { and } в синтаксисе их атрибутов, который является соглашением, по которому процессор XAML узнает, что расширение разметки должно обработать атрибут. Дополнительные сведения см. в разделе Расширения разметки и XAML. Binding является необычным расширением разметки в том, что класс Binding, реализующий функциональные возможности расширения, реализует также несколько других методов и свойств. Эти другие члены напрямую не требуются для функциональных возможностей расширения разметки. Члены предназначены для того, чтобы сделать Binding более гибким и самодостаточным классом, для которого может использоваться множество сценариев привязки данных в дополнение к функционированию в качестве расширения разметки XAML.
См. также
Основные понятия
Общие сведения о связывании данных
Общие сведения об объявлении привязок