Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Конвертеры значений

Приложения на основе страниц | Работа с панелью задач Windows 7 | Размер и выравнивание | Встроенные контейнеры компоновки | Прокрутка и декорирование содержимого | Элементы управления содержимым | Списковые элементы управления | Прочие элементы управления | Логические ресурсы | Базовые концепции привязки данных |


Читайте также:
  1. Future Indefinite (Simple) / Майбутній неозначений час
  2. Б.2 ИНДЕКСЫ БУКВЕННЫХ ОБОЗНАЧЕНИЙ И ПОЯСНЯЮЩИЕ ИХ СЛОВА
  3. Величины полезности разных альтернатив для различных значений емкости рынка
  4. Задание точных значений параметров преобразования
  5. Кастомизация таблицы назначений
  6. Конвертеры значений

Конвертер значений отвечает за преобразование исходных данных непосредственно перед их отображением в целевом элементе и (в случае двунаправленной привязки) преобразования нового целевого значения непосредственно перед его применением к источнику.

Для создания конвертера значений требуется выполнить четыре шага.

1. Создать класс, реализующий интерфейсIValueConverter.

2. Добавить атрибут [ValueConversion] в объявление класса и специфицировать исходный и целевой типы данных (это необязательный шаг).

3. Реализовать метод Convert(), преобразующий данные из исходного формата в отображаемый формат.

4. Реализовать метод ConvertBack(), выполняющий обратное преобразование значения из отображаемого формата в его «родной» формат.

Приведём пример очень простого конвертера значений, преобразующего булево значение в кисть WPF:

[ValueConversion(typeof(bool), typeof(Brush))]

publicclassBoolToColorConverter: IValueConverter

{

publicobject Convert(object value, Type targetType,

object parameter, CultureInfo culture)

{

return (bool)value? Brushes.Blue:Brushes.Green;

}

 

publicobject ConvertBack(object value, Type targetType,

object parameter,

CultureInfo culture)

{

returnnull; // ожидаем, чтопривязкаоднонаправленная

}

}

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

<Window x:Class="WpfApplication.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:Converters="clr-namespace:WpfApplication">

<Window.Resources>

<Converters:BoolToColorConverter x:Key="BoolToColor"/>

</Window.Resources>

<TextBlockForeground="{Binding,

Converter={StaticResourceBoolToColor}}"/>

</Window>

С помощью конвертеров значений можно реализовать оценку нескольких свойств-источников и использование их для создания единственного конвертированного значения. Для этого необходимо:

· Использовать привязку MultiBinding вместо обычного объекта Binding;

· Создать конвертер, реализующий интерфейс IMultiValueConverter.

MultiBinding группирует последовательность объектов Binding. Ниже приведен пример, где MultiBinding использует два свойства в объекте данных:

<TextBox>

<TextBox.Text>

<MultiBinding Converter="{StaticResourceValueInStockConverter}">

<Binding Path="UnitCost"/>

<Binding Path="UnitsInStock"/>

</MultiBinding>

</TextBox.Text>

</TextBox>

ИнтерфейсIMultiValueConverterопределяетметодыConvert()иConvertBack(), аналогичноинтерфейсуIValueConverter. Отличие в том, что им передаётся массив значений и типов значений вместо единственного значения. Эти значения помещаются в том же порядке, как они определены в разметке.


Дата добавления: 2015-11-14; просмотров: 30 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Практическое использование привязки данных| Проверка данных

mybiblioteka.su - 2015-2024 год. (0.016 сек.)