пятница, 30 сентября 2011 г.

Как в WPF приложении отобразить иконку файла

Некоторое время назад передо мной возникла задача отобразить в приложении иконку файла. Быстро было найдено решение – использовать функцию CreateBitmapSourceFromHIcon. Однако в рамках паттерна MVVM непосредственное использование функции было неудобно. Простенький конвертер, преобразующий путь к файлу в его иконку, делает удобным размещение иконки файла непосредственно в XAML.

среда, 21 сентября 2011 г.

Использование перечислений в локализуемых WPF приложениях

Использование перечислений (enum) в WPF очень удобно. Например, можно продекларировать в XAML указать, что поля перечисления надо использовать для наполнения ComboBox, и в выпадающем списке появятся текстовые представления полей перечисления.

пятница, 16 сентября 2011 г.

Связывание данных - выводим числа

Продолжаю тему про конвертеры в WPF.

В программе для анализа проектных данных, над которой я работаю в последнее время, требуется выводить много числовых данных, сопровождаемых существительными. Например 5 дней, 48 часов, 10 проектов, 4 сотрудника. Обратите внимание, что падеж существительного изменяется в зависимости от числа которое перед ним. Так, фраза “Осталось 41 дней” выглядит некрасиво и, естественно, немного раздражает. Вставлять отдельную логику вывода в каждом из многочисленных текстовых полей, в которых требуется выводить подобные данные, мне не хотелось, а хотелось сделать некоторое обобщенное решение задачи вывода в пользовательском интерфейсе числовых данных с существительными в правильном падеже.

вторник, 13 сентября 2011 г.

Связывание данных – форматируем строки

Одна из наиболее востребованных задач при связывании данных (Binding) – это вывод с использованием форматирования. К сожалению, стандартные средства связывания данных не предлагают средств для этого. Однако простенький конвертер помогает решить эту проблему.

понедельник, 12 сентября 2011 г.

Упрощаем множественные привязки к данным (MultiBinding)

Для сложных случаев связывания данных, когда свойство интерфейсного элемента зависит от нескольких параметров, WPF предлагает замечательный способ – множественная привязка к данными с использованием класса MultiBinding. Функция, вычисляющая значение свойства, оформляется в виде класса, реализующего интерфейс IMultiValueConverter. Однако необходимость частой реализации множественной привязки быстро показывает неудобность этого способа.