Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Windows Presentation Foundation.docx
Скачиваний:
43
Добавлен:
02.11.2018
Размер:
1.15 Mб
Скачать

13. Привязка данных Базовые концепции привязки данных

Привязка данных (data binding) – это отношение, которое используется для извлечения информации из объекта-источника и установки свойства целевого объекта. Механизм привязки данных WPF работает только для свойств зависимостей целевого объекта. Сам целевой объект обычно является элементом управления. Объектом-источником может быть произвольный объект .NET. Привязка данных способна (при определённых условиях) автоматически обновлять целевое свойство при изменении объекта-источника.

Очевидно, что при определении привязки данных нужно указать объект-источник и правило извлечения информации из него. Кроме этого, можно выполнить настройку следующих параметров:

  • Направление привязки. Привязка может быть однонаправленной (целевое свойство меняется при изменении свойства-источника), двунаправленной (модификации в источнике и целевом объекте влияют друг на друга) и от цели к источнику (исходное свойство обновляется при изменении целевого свойства).

  • Условие обновления источника. Если привязка двунаправленная или от цели к источнику, можно настроить момент обновления источника.

  • Конвертеры значений. Привязка может выполнять автоматическое преобразование данных при их перемещении от источника к целевому объекту и наоборот.

  • Проверка данных. Привязка позволяет определять правила валидации и поведение, осуществляемое при нарушении этих правил.

Привязка данных задаётся объектом класса System.Windows.Data.Binding. В табл. 12 приведено описание основных свойств этого класса.

Таблица 12

Свойства класса Binding

Имя свойства

Описание

Converter

Объект-конвертер, используемый для преобразования данных

ConverterCulture

Культура, передаваемая в конвертер

ConverterParameter

Произвольный параметр, передаваемый в конвертер

ElementName

Имя элемента WPF, который будет объектом-источником. Этот элемент и целевой объект должны принадлежать одному логическому дереву. Свойство нельзя задать совместно со свойствами RelativeSource или Source

FallbackValue

Значение, которое будет использоваться для целевого свойства, если операция привязки закончилась неудачей

Mode

Направление привязки (перечисление BindingMode):

  • OneWay – целевое свойство обновляется при изменении свойства-источника;

  • TwoWay – целевое свойство обновляется при изменении свойства-источника, и свойство-источник обновляется при изменении целевого свойства;

  • OneTime – целевое свойство устанавливается изначально на основе значения свойства-источника, и с этого момента изменения в источнике игнорируются;

  • OneWayToSource – исходное свойство обновляется при изменении целевого свойства;

  • Default – используется направление привязки, заданное в метаданных свойства зависимостей

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):

  • PropertyChanged – немедленно при изменении в целевом свойстве;

  • LostFocus – при потере целевым элементом управления фокуса ввода;

  • Explicit – при вызове метода UpdateSource();

  • Default – по значению, заданному в метаданных свойства зависимостей при помощи DefaultUpdateSourceTrigger

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=.}".