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 (рус: Преобразование Связанных Значений)
Есть несколько способов форматирования привязанных данных, в отображаемом элементе.