Data Binding Syntax (рус: Синтаксис Привязки Данных)
Привязку данных можно указать как в XAML, так и в коде. Для привязки в XAML, используется расширение синтаксиса разметки, описанное в данном разделе.
Data Binding Mark-up Extension (рус: Расширение разметки: Привязка Данных)
Данное расширение добавляет ключевое слово Binding
, которое исполь зуется с параметрами, к примеру источник данных, форматирование и т.д.
Ниже приведен пример:
<SomeControl SomeProperty="{Binding Path, Mode=ModeValue, StringFormat=Pattern}" />
Если используется более одного параметра, то их следует разделять запятой.
Параметр | Описание |
---|---|
Path | Путь привязки данных. |
Mode | Один из режимов привязки, подробнее далее. |
StringFormat | Шаблон форматирования значения при отображении. |
ElementName | Можно сократить, используя # в пути. |
Converter | Функция преобразования значения. |
RelativeSource | Использовать визульное дерево, вместо логического. |
Data Binding Path (рус: Путь Привязки Данныз)
Обычно, первым параметром указывают путь до источника данных. Это объект из контекста данных, который Avalonia находит при выполнении привязки данных.
Можно не указывать параметр Path
, представленные ниже примеры эквивалентны:
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Path=Name}"/>
Привязка пути может происходить как напрямую к элементу, так и через цепочку свойств.
Например, если источником данных указано свойство Student
,
а объект, возвращаемый этим свойством, имеет свойство Name
, то мы можем привязаться к нему, как указано ниже:
<TextBlock Text="{Binding Student.Name}"/>
Если источких данных представлен в виде массика или списка (с индексом), то вы можете указать конкретный индекс, как показана в примере ниже:
<TextBlock Text="{Binding Students[0].Name}"/>
Empty Binding Path (рус: Пустой Путь Привязки)
Вы можете добавлять привязку, без указания пути. В этом случае, привязка произойдет к контексту данных самого элемента управления, где определена привязкаю. Представленные ниже примеры эквивалентны:
<TextBlock Text="{Binding}"/>
<TextBlock Text="{Binding .}"/>
Data Binding Mode (рус: Режим Привязки Данных)
Вы можете выбрать, как происходит взаимодействие привязанного значение и источника данных.
Пример:
<TextBlock Text="{Binding Name, Mode=OneTime}">
Доступные режимы привязки:
Режим | Описание |
---|---|
OneWay | Изменение в источнике данных, меняет значение привязки. |
TwoWay | Изменение в источнике данных, меняет значения привязки. Изменение значения привязки, меняет значение в источнике данных. |
OneTime | Изменение в источнике данных - игноруется. Значение привязки берется из источника данных при инициализации привязки. |
OneWayToSource | Изменение в источнике данных - игноруется. Изменение значения привязки, меняет значение в источнике данных. |
Default | Используется режим привязки, указанный в коде элемента, см. ниже. |
Если не указан режим, то используется значение по-умолчанию.
Для элементов, значения которых не меняется из-за взаимодействия с пользователем - это OneWay
.
Для элементов, значения которых меняются из-за взаимодействия с пользователем, обычно используется TwoWay
.
Например, режим по-умолчанию для TextBlock.Text
- OneWay
, а для TextBox.Text
- TwoWay
.
Converting Bound Values (рус: Преобразование Связанных Значений)
Есть несколько способов форматирования привязанных данных, в отображаемом элементе.