Denis Gladkikh
Russian   |  English

Выбранный тег: Silverlight 4

Улучшаем Silverlight приложения: стандартное контекстное меню для TextBox

Как часто у меня бывает такое, что в одной руке у меня кружка чая или пряник, а другой рукой я печатаю и вожу мышкой. И вот не могу я одной рукой сразу же нажать Ctrl+C или Ctrl+V (могу конечно, но не удобно, не привычно). Во всех программах, на всех сайтах, у меня есть возможность выделить мышкой текст и скопировать его, а дальше вставить в другое место, а вот TextBox по умолчанию в Silverlight не предоставляет мне такой возможности, и это очень плохо. В особенности для бизнес-приложений. Люди привыкают к стандартным функциям, нельзя их лишать этого. Я говорю об этом меню:

sample

В Silverlight 4 появилась возможность обрабатывать нажатие правой кнопки мыши, и так же с ним появился контрол ContextMenu (в Silverlight Toolkit). Следовательно, мы теперь можем обогатить наш интерфейс.

Первое, с чего можно начать, это погуглить и найти что-то вроде такой статьи Silverlight 4 textbox right click context menu with cut, copy and paste behavior, которая приведет нас к более доработанному варианту TextBoxCutCopyPasteBehavior. Его, как показала практика, мне тоже пришлось немного доработать.



Unit тестирование в Silverlight 4

Наша команда настроила свою среду для тестирования Silverlight приложений еще год назад для Silverlight 3. Потом, со временем, просто обновляли библиотеки и приложения. Я бы хотел с вами поделиться теми удобными утилитами, которыми мы пользуемся для тестирования кода Silverlight приложений, как для запуска на локальном компьютере, так и для автоматизированного запуска на интеграционном сервере. Я буду говорить именно о Unit тестировании (блочном тестировании), а не о UI тестировании (тестирование интерфейсов). В нашей компании у нас есть команда QA, которая занимается UI тестированием, мы же просто пишем тесты для кода моделей представления и моделей. Для того, чтобы настроить среду для тестирования, мне понадобились: Silverlight Toolkit, Moq, R#, AgUnit, StatLight. А теперь обо всем по порядку.



Еще одно сравнение паттернов MVVM и MVP для Silverlight

Я уже когда-то поднимал тему сравнения паттернов MVP и MVVM при разработке Silverlight приложений: Выступление на ADD2010: Silverlight/WPF: возврат от паттерна MVVM к MVP. Вопрос, на самом деле сложный, какой из паттернов лучше. Я бы хотел продемонстрировать небольшой пример и подискутировать на эту тему в комментариях. Был бы рад, если кто-нибудь нашел бы хороший ответ на мой вопрос, который будет дальше.



071-506/070-506–“TS: Silverlight 4, Development” Passed

Посмотрел на сайте Prometric в разделе Candidate History наконец-то проверили бета экзамен по Silverlight 4, который я еще сдавал 23 октября прошлого года. Пока с сайта mcp.microsoft.com письмо не пришло с уведомлением об успешной сдаче экзамена, думаю, будет в ближайшие дни. Как писал Сергей Лутай в своем блоге, уже 3 дня назад стало возможным зарегистрироваться на этот экзамен 070-506 Silverlight 4 (бета экзамены имеют номер, начинающийся с 071, потом заменяется номер на 070).

Capture

Кто сдавал экзамен, думаю, так же могут посмотреть у себя в Candidate History информацию и обрадовать себя. Честно, на сколько я помню из экзамена, он был достаточно простым (правда помню я не многое), так что сдать должны все.

Если есть вопросы, готов ответить, но в рамках NDA, которую подписывает человек перед сдачей экзамена.



Silverlight 4 in Action

pbrown_cover150Silverlight 4 in Action (Manning, Pete Brown) – это вторая книга про Silverlight, которую я прочел. Первая была Pro Silverlight 3 in C# (Apress, Matthew MacDonald), которая в свое время мне очень хорошо помогла быстро освоиться с Silverlight после WPF. Но все же после прочтения SL4 in Action для меня фаворитом стала именно она, и на это есть доводы. Правда, сравнивать было бы правильно SL4 in Action, наверное, с Pro Business Applications with Silverlight.

Блог автора книги SL4 in Action Пита Брауна, думаю, знаком большинству Silverlight и WPF разработчиков. C 2009 года он сотрудник Microsoft, с 2007 года Silverlight стал для него приоритетной для разработки технологией. Вообще, можно подумать, что книга Silverlight 4 in Action – это уже вторая редакция, ведь есть книга Silverlight 2 in Action, с которой я к сожалению не знаком. Так вот, если присмотреться, то окажется, что SL2 in Action написана совершенно другими авторами. Так что, приводить информацию чем SL4 in Action отличается от своего предшественника не разумно – это совершенно другая книга. И, как я понимаю, это первая книга написанная Питом Брауном, и написана, я должен сказать, очень хорошо.



Первые впечатления о LightSwitch

lightswitch

Как и многие скачал я себе LightSwitch, недавно он стал доступен для MSDN подписчиков. Скачивал и устанавливал я его не просто так, чтобы посмотреть, а у меня в голове были уже идеи, как это можно было бы использовать в текущем проекте. Наш основной проект сейчас – это модульное Silverlight приложение, один из модулей – это административная часть с кучей редактируемых таблиц (буду называть их справочниками). Мне не хотелось делать отдельные представления на каждый справочник, потому я сделал механизм, который позволял просто заполнять DataGrid по имени таблицы и списку полей. Причем поля можно указываться и из таблиц, на которые есть ссылки (reference) из главной таблицы, на сервере построится правильный join. Так же реализовал свой DataForm, к сожалению стандартный расширить не получилось, из-за того что там были спрятаны некоторые необходимые методы и свойства, и помню, что в WPF эти свойства спрятаны не были, ну да ладно. В итоге, на сервер передаются объекты и построенные запросы: что нужно отобразить, что показать. То есть, чтобы добавить редактирование новой таблицы CronTask мне теперь необходимо сделать буквально следующее...



Экспорт в Excel из Silverlight/WPF DataGrid

Экспорт табличной части в Excel из приложения достаточно распространенная задача, и решать ее можно по разному. Конечно решение зависит от того, что за приложение вы разрабатываете. Если это приложение разрабатываемое для автоматизации бизнес процессов, и оно предназначено для установки в несколько контор, то скорее всего вы можете диктовать условия (рекомендации по использованию), необходимые для вашего приложения. Либо заказчик выставит требования, под которые вы будете его разрабатывать. В этом случае, экспорт проще всего реализовывать через COM, используя инфраструктуру Excel (либо OpenOffice), тогда и реализовать данную задачу при помощи данного подхода будет просто, и это даст вам наибольшую гибкость и возможность использовать всю мощь таблиц Excel. Об этом вариант и пойдет разговор ниже. Другой вариант – ваше приложение предназначено для домашних пользователей, в этом случае диктовать обязательную установку MS Office или OpenOffice не очень хорошо, потому лучше не завязываться на них, а использовать либо сторонние компоненты для создания документов, либо экспортировать в xml/html формат, который понимает MS Office (так делает, например, JIRA). Правда в этом случае будет тяжело удовлетворить просьбы клиентов, вроде: сделать так, чтобы экспортируемый документ был подготовлен для печати в альбомном виде с необходимыми полями, хотя может быть и возможно.