Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Для Windows 10 доступен новый механизм привязки, оптимизированный для повышения производительности и производительности разработчика. См. расширение разметки {x:Bind}.
Замечание
Общие сведения об использовании привязки данных в приложении с {Binding} (а также подробное сравнение между {x:Bind} и {Binding}) см. в подробной статье о привязке данных.
Расширение разметки {Binding} используется для привязки свойств данных к элементам управления, поступающим из источника данных, например кода. Расширение разметки {Binding} преобразуется во время загрузки XAML в экземпляр класса Binding . Этот объект привязки получает значение из свойства источника данных и отправляет его в свойство элемента управления. Объект привязки можно настроить для наблюдения за изменениями в значении свойства источника данных и обновляться на основе этих изменений. Кроме того, его можно настроить для отправки изменений в значение элемента управления обратно в исходное свойство. Свойство, которое является целевым объектом привязки данных, должно быть свойством зависимостей. Дополнительные сведения см. в разделе "Общие сведения о свойствах зависимостей".
{Binding} имеет тот же приоритет свойства зависимостей, что и локальное значение, и установка локального значения в императивном коде удаляет эффект любого набора {Binding} в разметке.
Использование атрибута XAML
<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
| Срок | Description |
|---|---|
| propertyPath | Строка, указывающая путь свойства для привязки. Дополнительные сведения см. в разделе "Путь к свойству " ниже. |
| bindingProperties |
propName=value[, propName=value]* Одно или несколько свойств привязки, указанных с помощью синтаксиса пары "имя-значение". |
| propName | Строковое имя свойства, заданного для объекта Binding . Например, "Преобразователь". |
| value | Значение, которое необходимо установить для свойства. Синтаксис аргумента зависит от свойства свойства класса Binding, который можно задать с помощью раздела {Binding} ниже. |
Путь к свойству
Путь описывает свойство, к которому вы привязываетесь (исходное свойство). Путь — это позиционный параметр, который означает, что можно явно использовать имя параметра ({Binding Path=EmployeeID}) или указать его как первый неименованный параметр ({Binding EmployeeID}).
Тип Path — это путь свойства, который представляет собой строку, интерпретируемую как свойство или под-свойство вашего пользовательского типа или типа фреймворка. Тип может быть, но не обязательно быть, DependencyObject. Шаги в пути к свойству разделены точками (.), и можно включить несколько разделителей для обхода последовательных вложенных свойств. Используйте разделитель точек независимо от языка программирования, используемого для реализации объекта, привязанного к.
Например, чтобы привязать пользовательский интерфейс к свойству "первое имя" объекта сотрудника, путь к свойству может иметь значение Employee.FirstName. Если вы привязываете контроль управления элементами к свойству, содержащему подопечных сотрудника, путь к свойству может быть "Employee.Dependents", а шаблон элемента управления будет заботиться о отображении элементов в "Dependents".
Если источник данных является коллекцией, путь к свойству может указывать элементы в коллекции по их позиции или индексу. Например, "Teams[0].Players", где литерал "[]" заключает "0", указывающий первый элемент в коллекции.
При использовании привязки ElementName к существующему объекту DependencyObject можно использовать присоединенные свойства в рамках пути к свойству. Чтобы разъяснить присоединенное свойство, чтобы промежуточная точка в имени присоединенного свойства не считалась шагом в пути к свойству, помещайте скобки вокруг присоединенного имени свойства, квалифицированного владельцем; например, (AutomationProperties.Name).
Промежуточный объект пути свойства хранится как объект PropertyPath в представлении времени выполнения, но большинству сценариев не нужно взаимодействовать с объектом PropertyPath в коде. Обычно можно указать необходимые сведения о привязке с помощью XAML.
Дополнительные сведения о синтаксисе строки для пути свойства, путях свойств в функциональных областях анимации и создании объекта PropertyPath см. в разделе Синтаксис пути свойства.
Свойства класса Binding, который можно задать с помощью {Binding}
{Binding} раскрыт через синтаксис заполнителя bindingProperties, так как в расширении разметки можно задать несколько свойств чтения/записи Binding. Свойства можно задать в любом порядке с парами propName=value, разделёнными запятыми. Для некоторых свойств требуются типы, которые не имеют преобразования типов, поэтому для них требуется использование вложенных расширений разметки, таких как {Binding}.
| Недвижимость | Description |
|---|---|
| Путь | См. приведенный выше раздел "Путь к свойству ". |
| Преобразователь | Указывает объект преобразователя, вызываемый подсистемой привязки. Преобразователь можно задать в разметке с помощью расширения разметки {StaticResource} для ссылки на этот объект из словаря ресурсов. |
| КонвертерLanguage | Указывает культуру, используемую преобразователем. (Если вы задаете конвертер.) Культура задается как идентификатор на основе стандартов. Дополнительные сведения см. в разделе ConverterLanguage |
| ConverterParameter | Задает параметр преобразователя, который можно использовать в логике преобразователя. (Если вы задаете конвертер.) Большинство преобразователей используют простую логику, которая получает всю необходимую информацию из переданного значения для преобразования и не требует значения ConverterParameter . Параметр ConverterParameter предназначен для более сложных реализаций преобразователя, которые имеют условную логику, зависящую от значений, переданных в ConverterParameter. Вы можете написать преобразователь, использующий значения, отличные от строк, но это редко, см. примечания в ConverterParameter для получения дополнительных сведений. |
| ElementName | Указывает источник данных, ссылаясь на другой элемент в той же конструкции XAML, которая имеет свойство Name или атрибут x:Name. Это часто используется для совместного использования связанных значений или использования вложенных свойств одного элемента пользовательского интерфейса для предоставления определенного значения для другого элемента, например в шаблоне элемента управления XAML. |
| Резервное значение | Указывает значение для отображения, когда не удается разрешить источник или путь. |
| Режим | Указывает режим привязки в качестве одного из следующих значений: OneTime, OneWay или TwoWay. Они соответствуют константным именам перечисления BindingMode . Значение по умолчанию — OneWay. Обратите внимание, что это отличается от значения по умолчанию для {x:Bind}, который имеет значение OneTime. |
| Относительный источник | Указывает источник данных, описывая положение источника привязки относительно положения целевого объекта привязки. Это чаще всего используется в привязках в шаблонах элементов управления XAML. Установка расширения разметки {RelativeSource}. |
| Источник | Указывает источник данных объекта. В расширении разметки Binding свойство Source требует ссылки на объект, например ссылку на расширение разметки {StaticResource}. Если это свойство не указано, то в контексте данных действия указывается источник. Это более типично, чтобы не указывать исходное значение в отдельных привязках, а вместо этого полагаться на общий DataContext для нескольких привязок. Дополнительные сведения см. в разделе DataContext или Привязка данных подробно. |
| TargetNullValue | Указывает значение, которое отображается, если исходное значение определяется, но явно является null. |
| UpdateSourceTrigger | Указывает время обновления источника привязки. Если не указано, используется значение по умолчанию. |
Замечание
Если вы преобразуете разметку из {x:Bind} в {Binding}, помните о различиях значений по умолчанию для свойства Mode .
Конвертер, ConverterLanguage и ConverterLanguage связаны с задачей преобразования значения или типа из источника привязки в тип или значение, совместимое с целевым свойством привязки. Дополнительные сведения и примеры см. в разделе "Преобразования данных" подробно о привязке данных.
Замечание
Начиная с Windows 10 версии 1607 платформа XAML предоставляет встроенный логический преобразователь видимости. Преобразователь сопоставляет true с перечислением Visible и false с Collapsed, чтобы можно было привязать свойство Видимости к булеву значению без создания преобразователя. Чтобы использовать встроенный преобразователь, минимальная целевая версия пакета SDK приложения должна быть 14393 или более поздней. Его нельзя использовать, если приложение предназначено для более ранних версий Windows 10. Дополнительные сведения о целевых версиях см. в разделе "Адаптивный код версии".
Источник, RelativeSource и ElementName указывают источник привязки, поэтому они являются взаимоисключающими.
Подсказка
Если необходимо указать одну фигурную скобку для значения, например в Path или ConverterParameter, предварите её обратным слэшем: \{. Кроме того, заключите всю строку текста, содержащую фигурные скобки, подлежащие экранированию, в двойные кавычки, например ConverterParameter='{Mix}'.
Примеры
<!-- binding a UI element to a view model -->
<Page ... >
<Page.DataContext>
<local:BookstoreViewModel/>
</Page.DataContext>
<GridView ItemsSource="{Binding BookSkus}" SelectedItem="{Binding SelectedBookSku, Mode=TwoWay}" ... />
</Page>
<!-- binding a UI element to another UI element -->
<Page ... >
<Page.Resources>
<local:S2Formatter x:Key="GradeConverter"/>
</Page.Resources>
<Slider x:Name="sliderValueConverter" ... />
<TextBox Text="{Binding Path=Value, ElementName=sliderValueConverter,
Mode=OneWay,
Converter={StaticResource GradeConverter}}"/>
</Page>
Второй пример задает четыре различных свойства привязки : ElementName, Path, Mode и Converter.
Путь в этом случае явно отображается как свойство Binding.
Путь оценивается как источник данных привязки, представляющий собой другой объект из того же дерева объектов во время выполнения — это ползунок под названием sliderValueConverter.
Обратите внимание, что значение свойства Конвертер использует другое расширение разметки, расширение {StaticResource}, поэтому здесь используются два вложенных расширения разметки. Сначала вычисляется внутренний элемент, так что после получения ресурса появляется удобный IValueConverter (настраиваемый класс, создаваемый элементом разметки local:S2Formatter в ресурсах), который может использоваться для привязки.
Поддержка инструментов
Microsoft IntelliSense в Microsoft Visual Studio отображает свойства контекста данных при создании {Binding} в редакторе разметки XAML. Как только вы введёте "{Binding", свойства контекста данных, соответствующие Path, отображаются в раскрывающемся списке. IntelliSense также помогает с другими свойствами Binding. Для этого необходимо иметь контекст данных или контекст данных во время разработки на странице разметки. Перейти к определению (F12) также работает с {Binding}. Кроме того, можно использовать диалоговое окно привязки данных.
Windows developer