Показаны сообщения с ярлыком NET. Показать все сообщения
Показаны сообщения с ярлыком NET. Показать все сообщения

вторник, 17 апреля 2012 г.

Полуавтоматическая генерация кода

Сегодня я хочу поговорить об автоматической генерации кода C#. Например, свойства в классах, описывающих сущности предметной области, обычно описываются по совершенно одинаковой схеме. И мне элементарно лениво писать для каждого примитивного свойства одинаковые конструкции. Немного спасает применение сниппетов и активных шаблонов, но когда приходит нужда что-то поменять в этой схеме, то приходится перелопачивать кучу кода. Так почему бы это однообразие не генерировать автоматически в процессе сборки?
В какой-то момент кинетическая энергия творчества ненадолго пересилила потенциальную энергию лени, и результатом этого стала маленькая библиотечка для автоматической генерации некоторых исходных файлов программы на основе внешних данных. Приглашаю под кат всех ленивых (в хорошем смысле этого слова) разработчиков на C#.

суббота, 10 марта 2012 г.

Представление метаданных с помощью перечислений

Что такое метаданные? Это некоторая описательная информация, которая используется алгоритмами программы. Например, это могут быть названия таблиц и полей базы данных, названия ключей реестра, в которых хранятся требуемые параметры, или названия свойств объектов, к которым обращается программа. Я хочу рассказать, как с помощью методов-расширений и атрибутов можно удобно использовать перечисления для представления метаданных.

понедельник, 27 февраля 2012 г.

Не забудьте нажать релиз!

.NET чудесно интегрирована с COM. Разработчик может без лишних усилий, легко и просто загружать и использовать в своих программах COM объекты из других приложений. Но разница в способе управления памятью (сборщик мусора .NET и подсчет ссылок в COM) иногда подкидывает неприятные сюрпризы.

вторник, 31 января 2012 г.

Полезные расширения для работы с папками

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

пятница, 9 декабря 2011 г.

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

Связывание данных (Data Binding) в WPF – очень мощный (правда, не всегда удобный) механизм. А возможность использование конвертеров дает возможность связывать интерфейс с данными почти любого вида. Несмотря на кажущуюся простоту явления, возможности, открываемые конвертерами, поистине безграничны.

суббота, 19 ноября 2011 г.

Централизованное управление командами в WPF

Когда я был начинающим программистом, то программировал с использованием библиотеки MFC. Мне очень нравилась предлагаемая MFC модель использования команд. Команда – это некоторый идентификатор. С идентификатором команды просто и естественно связываются строка подсказки, метод обработки доступности команды, метод для выполнения действия команды и т.п. Команды объявляются централизовано, обработчики команд не зависят от того, как была вызвана команда – программно, нажатием на кнопку в панели инструментов или через контекстное меню. Все было понятно и логично.

среда, 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)

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

вторник, 14 июня 2011 г.

Локализация строк в WPF приложениях

При использовании материалов ссылка на источник обязательна.
В предыдущем посте я рассказывал о том, как можно организовать локализацию приложения WPF с использованием утилиты LocBaml от Microsoft. Этот способ позволяет удобно организовать процесс локализации свойств интерфейсных элементов, объявленных в XAML. Однако оставался открытым вопрос локализации строк, которые используются непосредственно к коде, например, тексты сообщений и т.п.

четверг, 9 июня 2011 г.

Технология локализации WPF приложений

При использовании материала
ссылка на источник обязательна.
Интернет пестрит разнообразными методами локализации WPF приложений. Я даже не буду приводить здесь ссылки, любой заинтересованный в этом вопросе найдет их за несколько секунд. В этой статье я хочу рассказать о технологии локализации, которая практически применялась при разработке в моем последнем проекте (программа ProjectsProfiler), и, как мне кажется, может оказаться полезной другим разработчикам. В отличие от любого метода, который лишь обозначает способ, которым теоретически можно создавать приложение, говорящего на разных языках, технология описывает производственный процесс создания такого приложения и дает ответ на многие вопросы типа "А как сделать...".