- •А.А. Волосевич
- •1. Общее описание wpf
- •2. ПРостейшее Приложение wpf
- •4. Базовые концепции wpf Иерархия классов
- •Свойства зависимостей и присоединённые свойства
- •Маршрутизируемые события
- •Многопоточность в wpf
- •5. СтруктуРа Оконного приложения wpf
- •Класс Window
- •Класс Application
- •6. Компоновка
- •Размер и выравнивание
- •Основные контейнеры компоновки
- •Прокрутка и декорирование содержимого
- •7. Обзор элеменТов управления
- •Цвета и окантовка:
- •Шрифт содержимого:
- •Элементы управления содержимым
- •Списковые элементы управления
- •Прочие элементы управления
- •8. Фигуры
- •9. Цвет, кисти, прозрачность Представление цвета в wpf
- •Лучшие кисти
- •Прозрачность
- •10. Трансформации и эффекты
- •11. Классы drawing и visual
- •12. Ресурсы
- •Двоичные ресурсы
- •Логические ресурсы
- •13. Привязка данных Базовые концепции привязки данных
- •Практическое использование привязки данных
- •Конвертеры значений
- •Проверка данных
- •14. Стили и триггеры
- •15. ПрИвязка к коллекциям и шаблоны данных
- •16. Представления Данных
- •17. ШАблоны элементов управления
13. Привязка данных Базовые концепции привязки данных
Привязка данных (data binding) – это отношение, которое используется для извлечения информации из объекта-источника и установки свойства целевого объекта. Механизм привязки данных WPF работает только для свойств зависимостей целевого объекта. Сам целевой объект обычно является элементом управления. Объектом-источником может быть произвольный объект .NET. Привязка данных способна (при определённых условиях) автоматически обновлять целевое свойство при изменении объекта-источника.
Очевидно, что при определении привязки данных нужно указать объект-источник и правило извлечения информации из него. Кроме этого, можно выполнить настройку следующих параметров:
-
Направление привязки. Привязка может быть однонаправленной (целевое свойство меняется при изменении свойства-источника), двунаправленной (модификации в источнике и целевом объекте влияют друг на друга) и от цели к источнику (исходное свойство обновляется при изменении целевого свойства).
-
Условие обновления источника. Если привязка двунаправленная или от цели к источнику, можно настроить момент обновления источника.
-
Конвертеры значений. Привязка может выполнять автоматическое преобразование данных при их перемещении от источника к целевому объекту и наоборот.
-
Проверка данных. Привязка позволяет определять правила валидации и поведение, осуществляемое при нарушении этих правил.
Привязка данных задаётся объектом класса System.Windows.Data.Binding. В табл. 12 приведено описание основных свойств этого класса.
Таблица 12
Свойства класса Binding
Имя свойства |
Описание |
Converter |
Объект-конвертер, используемый для преобразования данных |
ConverterCulture |
Культура, передаваемая в конвертер |
ConverterParameter |
Произвольный параметр, передаваемый в конвертер |
ElementName |
Имя элемента WPF, который будет объектом-источником. Этот элемент и целевой объект должны принадлежать одному логическому дереву. Свойство нельзя задать совместно со свойствами RelativeSource или Source |
FallbackValue |
Значение, которое будет использоваться для целевого свойства, если операция привязки закончилась неудачей |
Mode |
Направление привязки (перечисление BindingMode):
|
IsAsync |
Если свойство установлено в true, извлечение данных из источника будет происходить асинхронно |
NotifyOnSourceUpdated |
Булево значение: указывает на необходимость генерации события SourceUpdated при передаче информации от объекта-источника к целевому объекту |
NotifyOnTargetUpdated |
Булево значение: указывает на необходимость генерации события TargetUpdated при передаче информации от целевого объекта к объекту-источнику |
NotifyOnValidationError |
Булево значение: указывает на необходимость генерации присоединённого события Error у целевого объекта при ошибках проверки данных |
Path |
Путь к информации в объекте-источнике |
RelativeSource |
Путь к объекту-источнику, задаваемый относительно целевого объекта. Свойство нельзя задать совместно со свойствами ElementName или Source |
Source |
Объект-источник. Свойство нельзя задать совместно со свойствами ElementName или RelativeSource |
StringFormat |
Форматирование для извлекаемых данных строкового типа |
TargetNullValue |
Значение, которое будет использоваться для целевого свойства, если из источника извлекается null |
ValidatesOnDataErrors |
Булево значение: указывает на использование объектом-источником интерфейса IDataErrorInfo |
ValidatesOnExceptions |
Булево значение: указывает на необходимость рассматривать исключения как ошибки валидации |
ValidationRules |
Коллекция объектов, определяющих правила валидации |
UpdateSourceExceptionFilter |
Метод обработки исключений, генерируемых при валидации |
UpdateSourceTrigger |
Задаёт момент обновления источника при изменениях в целевом свойстве (перечисление UpdateSourceTrigger):
|
XPath |
Выражение XPath. Может использоваться, если источник привязки возвращает XML |
В свойство привязки Path записывается строка по следующим правилам:
-
В простейшем случае значением свойства Path является имя свойства объекта-источника, используемого в привязке: Path=PropertyName.
-
Подсвойства свойства можно указывать с помощью синтаксиса, подобного используемому в C#: Path=ShoppingCart.Order.
-
Для создания привязки к присоединяемому свойству поместите это присоединяемое свойство в скобки: Path=(DockPanel.Dock). Такой же синтаксис можно использовать и для простых свойств, если известен тип объекта-источника: Path=(TextBox.Text).
-
Элементы индексатора можно использовать с помощью квадратных скобок: Path=ShoppingCart[0].
-
Если источник является представлением коллекции, Path=/ задаёт привязку к текущему элементу в коллекции. Можно указать подсвойство текущего элемента: Path=/SubProp.
-
Для привязки к текущему источнику можно использовать путь в виде точки, т. е. Text="{Binding}" эквивалентно Text="{Binding Path=.}".