Я начинаю серию постов, посвященных разнообразным методам-расширениям, которые немного упрощают жизнь простого разработчика, выполняя рутинную работу. Сегодня я хочу рассказать о расширениях для класса Exception.
Проблемы, возникающие при создании программного продукта и пути их решения на личном опыте.
воскресенье, 18 декабря 2011 г.
пятница, 9 декабря 2011 г.
Использование конвертеров значений в привязках данных WPF
Связывание данных (Data Binding) в WPF – очень мощный (правда, не всегда удобный) механизм. А возможность использование конвертеров дает возможность связывать интерфейс с данными почти любого вида. Несмотря на кажущуюся простоту явления, возможности, открываемые конвертерами, поистине безграничны.
среда, 7 декабря 2011 г.
Дополнительные материалы по использованию слабых ссылок
воскресенье, 4 декабря 2011 г.
"Магия" Linq
четверг, 24 ноября 2011 г.
Анимация времени
При реализации гладкой прокрутки шкалы времени в диаграммах мы с коллегами столкнулись с необходимостью анимировать свойства зависимостей, тип которых DateTime. Но оказалось, что стандартных классов для анимации свойств такого типа не предусмотрено. Сначала мы попробовали использовать класс ObjectAnimationUsingKeyFrames, однако, чтобы анимация выглядела гладко, приходится добавлять много ключевых кадров, а это, в свою очередь, приводило к большому количеству изменений свойства и частым перерисовкам, перерасчетам привязок. В общем, выглядело не очень красиво.
суббота, 19 ноября 2011 г.
Централизованное управление командами в WPF
Когда я был начинающим программистом, то программировал с использованием библиотеки MFC. Мне очень нравилась предлагаемая MFC модель использования команд. Команда – это некоторый идентификатор. С идентификатором команды просто и естественно связываются строка подсказки, метод обработки доступности команды, метод для выполнения действия команды и т.п. Команды объявляются централизовано, обработчики команд не зависят от того, как была вызвана команда – программно, нажатием на кнопку в панели инструментов или через контекстное меню. Все было понятно и логично.
понедельник, 7 ноября 2011 г.
MessageBox + FlowDocument
После того как я познакомился с магией технологии WPF и, в частности, с возможностями отображения потокового содержимого, меня очень удивило отсутствие штатной возможности вывести пользователю простое сообщение с использованием FlowDocument. И, в некоторый момент, я в своем проекте реализовал простейший механизм для отображения таких сообщений.
среда, 2 ноября 2011 г.
Завершаем создание инсталляционного комплекта
После того как все файлы инсталлятора упакованы в один файл и UAC не задает лишних вопросов при установке, добавим последний завершающих штрих – на последней странице программы установки добавим галочку “Запустить программу”.К сожалению, стандартные средства Setup Project не позволяют это сделать.
пятница, 21 октября 2011 г.
Обновление манифеста приложения с командной строки
среда, 19 октября 2011 г.
Продолжаем создание инсталляционного комплекта
В прошлом посте я начал тему создания инсталляционного комплекта. Один из вопросов, который остался нераскрытым:
Ожидание завершения всех процессов, запущенных из программы установки.
Это должна быть простая программа, которая не требует установки дополнительных компонентов, поэтому язык C# не подходит (на компьютере может отсутствовать .NET Framework). Я выбрал для её реализации С++ с использованием статической библиотеки STL.
понедельник, 10 октября 2011 г.
Создание средствами Microsoft установочного комплекта для публикации в Web
- Использовать для сборки другое средство создания установочного комплекта.
- Заархивировать все файлы комплекта (например, с помощью ZIP) и опубликовать на сайте полученный архив.
- Превратить полученный установочный комплект в самораспаковывающийся архив, автоматически запускающий установку программы.
среда, 5 октября 2011 г.
Конвертер для получения пути к файлу из пути к папке и имени
Некоторое время назад передо мной возникла простая задача: вывести в текстовом поле полный путь к файлу, при том что в модели он был представлен двумя свойствами: путь к папке с файлом и имя файла. Разделение на два поля в модели было важным с архитектурной точки зрения, заводить дополнительное свойство для их объединения не хотелось. Объединить их требовалось только для отображения пользователю.
пятница, 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)
вторник, 14 июня 2011 г.
Локализация строк в WPF приложениях
четверг, 9 июня 2011 г.
Технология локализации WPF приложений
среда, 8 июня 2011 г.
Первое сообщение
В ходе работы над программой мы столкнулись с множеством трудностей, как организационного, так и технического характера. Я уверен, что эти проблемы не уникальны, и в этом блоге я хочу поделиться найденными способами их решения.
В следующем посте я планирую рассказать о созданной методике локализации WPF приложений, на основе предлагаемого Microsoft инструмента locbaml. В чистом виде эта технология практически не применима для профессионального использования, так как плохо встраивается в технологический цикл выпуска программы, материал для перевода невозможно отдать переводчику, так как в нем содержится масса лишней информации, повреждение которой приведет к неработающей программе.
Нам удалось создать несложный инструмент, который позволил включить построение локализованных сборок в сценарий автоматической сборки, решить проблему независимого изменения программы и перевода.