Читайте также:
|
|
Привязка данных (data binding) – это отношение, которое используется для извлечения информации из источника данных и установки свойства зависимостей в целевом объекте. Целевой объект обычно является элементом управления. Источником данных может быть произвольный объект.NET. Привязка способна (при определённых условиях) автоматически обновлять целевое свойство при изменении данных источника.
Очевидно, что при определении привязки нужно указать целевое свойство, источник данных и правило извлечения информации из источника. Кроме этого, можно выполнить настройку следующих параметров:
1. Направление привязки. Привязка может быть однонаправленной (целевое свойство меняется при изменении данных источника), двунаправленной (изменения в источнике и целевом объекте влияют друг на друга) и от цели к источнику (источник данных обновляется при изменении целевого свойства).
2. Условие обновления источника. Если привязка двунаправленная или от цели к источнику, можно настроить момент обновления источника данных.
3. Конвертеры значений. Привязка может выполнять автоматическое преобразование данных при их перемещении от источника к целевому объекту и наоборот.
4. Правила проверка данных. Привязка может включать правила проверки данных на корректность и поведение, выполняемое при нарушении правил.
Рис. 26. Концепция привязки данных.
В WPF привязка данных описывается либо декларативно, либо в коде. В любом случае используется объект класса System.Windows.Data.Binding (унаследованный от MarkupExtension). В табл. 5 приведено описание основных свойств этого класса.
Таблица 5
Свойства класса Binding
Имя свойства | Описание |
Converter | Конвертер для преобразования данных при привязке |
ConverterCulture | Культура, передаваемая в конвертер |
ConverterParameter | Произвольный объект, передаваемый в конвертер |
ElementName | Имя элемента в дереве объектов, который будет источником данных для привязки |
FallbackValue | Значение для целевого свойства, которое будет использоваться, если операция привязки закончилась неудачей |
Mode | Направление привязки (перечисление BindingMode): OneWay – от источника к целевому свойству; TwoWay – от источника к целевому свойству и наоборот; OneTime – целевое свойство устанавливается на основе данных источника, затем изменения в источнике игнорируются; OneWayToSource – источник обновляется при изменении целевого свойства; Default – используется направление привязки, заданное в метаданных свойства зависимостей |
IsAsync | При установке в true привязка выполняется асинхронно |
NotifyOnSourceUpdated | При установке в true при передаче информации от источника к целевому объекту генерируется событие SourceUpdated |
NotifyOnTargetUpdated | При установке в true при передаче информации от целевого объекта к источнику генерируется событие TargetUpdated |
NotifyOnValidationError | При установке в true и наличии ошибок проверки данных у целевого объекта генерируется присоединённое событие Error |
Path | Путь к информации в источнике данных. Аргумент конструктора класса Binding |
RelativeSource | Путь к источнику, задаваемый относительно целевого объекта |
Source | Источник данных |
StringFormat | Форматирование для извлекаемых данных строкового типа |
TargetNullValue | Значение, которое будет использоваться для целевого свойства, если из источника извлекается null |
ValidatesOnDataErrors | Булево значение: указывает на использование объектом-источником интерфейса IDataErrorInfo |
ValidatesOnExceptions | Булево значение: указывает на необходимость рассматривать исключения как ошибки проверки данных |
ValidationRules | Коллекция объектов, определяющих правила проверки данных |
UpdateSource- ExceptionFilter | Метод обработки исключений, генерируемых при проверке данных |
UpdateSourceTrigger | Задаёт момент обновления источника при изменениях в целевом свойстве (перечисление UpdateSourceTrigger): PropertyChanged – немедленно при изменении; LostFocus – при потере целевым элементом фокуса ввода; Explicit – при вызове метода UpdateSource(); Default – по значению, заданному в метаданных свойства зависимостей при помощи DefaultUpdateSourceTrigger |
XPath | Выражение XPath. Может использоваться, если источник привязки возвращает XML |
Класс Binding позволяет описывать привязку в XAML или в коде. В следующем фрагменте разметки XAML привязка соединяет два свойства разных элементов управления – при перемещении слайдера автоматически меняется размер шрифта текста:
<StackPanel>
<Slider x:Name="slider" Minimum="1" Maximum="40" />
<TextBlock x:Name="text" Text="Sample Text"
FontSize="{Binding ElementName=slider, Path=Value}" />
</StackPanel>
Рассмотрим этот же пример, реализованный при помощи кода:
// создаём и настраиваем объект Binding
var binding = new Binding();
binding.ElementName = "slider";
binding.Path = new PropertyPath("Value");
// устанавливаем привязку
text.SetBinding(TextBlock.FontSizeProperty, binding);
Класс System.Windows.Data.BindingOperations предоставляет набор статических методов для управления привязкой в коде. В частности, метод GetBinding() позволяет получить привязку для указанного целевого объект и его свойства зависимостей, метод SetBinding() устанавливает привязку, а метод ClearBinding() удаляет привязку.
// удаляем установленную привязку для элемента text
BindingOperations.ClearBinding(text, TextBlock.FontSizeProperty);
Дата добавления: 2015-11-14; просмотров: 115 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Прочие элементы управления | | | Источники и поставщики данных |