Windows Ribbon в .NET-приложениях (ч.6)

Автор: Topol Суббота, Май 5th, 2012 Нет комментариев

Рубрика: Операционные системы

После длительного перерыва мы продолжаем работать с лентой Windows в WinForms-приложениях. Как обычно, напомню, что в предыдущей статье мы рассмотрели несколько типов коллекций (или галерей) Windows Ribbon.

За это время Арик Познански успел выпустить версию 2.6 библиотеки Windows Ribbon for WinForms. В ней произошли довольно серьёзные изменения, поэтому вся эта статья будет посвящена именно обновлениям в данной версии.

Начнём со списка произведённых изменений.

Так что же нового?

 

  • Упрощённое использование элемента управления Ribbon.
    Просто перетащите контрол ленты на форму — и можете работать. Никакой реализации IRibbonForm, никакой обработки изменения размеров, никаких вызовов InitFramework и DestroyFramework (прим. переводчика: см. первую статью).
  • Добавлена поддержка локализации
  • Решение обновлено для использования с .NET  4 и Visual Studio  2010
  • Добавлен инструмент RibbonGenerator
  • Добавлена возможность указывать «быстрые клавиши» в формате XML
  • А также исправлено несколько ошибок (в частности, ошибка с галереями — прим. переводчика: см. предыдущую статью).

Что насчёт примеров?
Все 18 примеров были обновлены для использования новой инфраструктуры.

Кроме того, появился новый пример, «19-Localization», который показывает, как использовать новую возможность локализации элемента управления ленты.

Более подробно о поддержке локализации и инструменте RibbonGenerator можно прочитать в этой статье на CodeProject.

Прим. переводчика: локализация будет рассмотрена в одной из последующих статей цикла, а об инструменте RibbonGenerator будет рассказано чуть ниже.

Нужно знать что-нибудь ещё?
Просто убедитесь, что вы скомпилировали и установили RibbonGenerator. Проект установщика входит в пакет поставки библиотеки. Это средство необходимо для создания DLL-библиотек ленты.

Благодарность
Я бы хотел поблагодарить Бернхарда Эльбла (Bernhard Elbl) за его большой вклад в проект. Бернард теперь является частью команды разработчиков проекта на codeplex.

Ribbon for WinForms: краткое руководство
В связи с большим количеством запросов инструкции по работе с новой версией проекта Ribbon for WinForms, я попросил Бернхарда написать краткое руководство.

Бернхард согласился и написал отличное руководство, которое я вам сейчас представлю. Заметьте, что первые 2 шага должны быть выполнены только в первый раз перед созданием приложений с лентой. Остаётся только один шаг (3) из руководства. Проще и быть не может!

Прим. переводчика: шаги с загрузкой и установкой Windows 7 SDK и последней версии RibbonLib (на момент написания статьи это версия 2.6) мы пропустим, так как они слишком очевидны.

Шаг 1. Соберите установщик RibbonGenerator и установите его.
Откройте решение Visual Studio 2010 для RibbonGenerator (.\RibbonLib_v2.6\RibbonGenerator\RibbonGenerator.sln), установите конфигурацию сборки на «Release» и соберите проект «RibbonGenerator.Setup» дважды!

После второй сборки проект скомпилируется без ошибок! Это официальный баг Visual Studio 2010, и нам придётся с этим жить.

Теперь вы можете запустить собранный установщик, который вы найдёте здесь:.\RibbonLib_v2.6\RibbonGenerator\RibbonGenerator.Setup\Release\RibbonGenerator.Setup.msi

Шаг 2. Скомпилируйте Ribbon.dll
Чтобы получить скомпилированную версию Ribbon.dll, откройте соответствующее решение (.\RibbonLib_v2.6\Ribbon-cs.sln) и соберите его с помощью Visual Studio (прим. переводчика: достаточно собрать только проект Ribbon).

Шаг 3. Создайте новое приложение Windows Forms с контролом ленты
Добавьте Ribbon в панель элементов, щёлкнув на ней правой кнопкой мыши и выбрав пункт «Выбрать элементы…». Укажите файл.\RibbonLib_v2.6\Ribbon\bin\Release\Ribbon.dll.

Перетащите элемент управления Ribbon на форму.

Для основной части формы можно добавить элемент управления Panel и задать свойству «DockStyle» значение «Fill».

Добавьте в проект новый XML-файл и назовите его Ribbon.xml. Добавьте в него следующее содержимое:

Код:
<?xml version=’1.0′ encoding=’utf-8′?>
<Application xmlns=’http://schemas.microsoft.com/windows/2009/Ribbon’>
<Application.Commands>
</Application.Commands>

<Application.Views>

<Ribbon>
</Ribbon>
</Application.Views>
</Application>

Задайте свойству файла Ribbon.xml «Специальный инструмент» значение «RibbonGenerator», чтобы автоматически сгенерировать файл .ribbon.

Прим. переводчика: для удобства работы с файлом разметки — думаю, вы уже поняли, что это именно он — вы можете по-прежнему указать для него соответствующую схему (см. первую статью).

Теперь необходимо указать файл .ribbon в свойстве элемента управления Ribbon на форме. Имя должно быть полным, включая пространство имён проекта.

Вот и всё. Теперь ваше приложение поддерживает ленточный интерфейс.

Ribbon for WinForms: подробнее об инструменте RibbonGenerator
Бернхард Эльбл опубликовал ещё два сообщения в своём блоге, подробнее описывающих последние улучшения в проекте Ribbon for WinForms.

В первом сообщении Бернхард объясняет, что такое инструмент RibbonGenerator и как он генерирует .ribbon-файлы.

Во втором сообщении Бернхард рассказывает, что нужно для того, чтобы использовать проект Ribbon for WinForms в среде Visual Studio 2010 Express.

Что делает инструмент RibbonGenerator?
Он генерирует .ribbon-файлы, которые содержат определения команд и элементов управления и могут использоваться для отображения контрола ленты на форме Windows Forms.

Что из себя представляет RibbonGenerator?
Для генерирования .ribbon-файлов могут использоваться два приложения:

  • Специальный инструмент, запускаемый прямо внутри среды Visual Studio, и
  • Консольное приложение, запускаемое из командной строки

Оба приложения выполняют одинаковые функции.

Как RibbonGenerator генерирует .ribbon-файлы?
Поскольку нет подходящего API, инструмент «всего лишь» выполняет .bat-файл. Это настраиваемый .bat-файл, его содержимое создаётся инструментом. После первого обращения к инструменту файл «template.bat» создаётся в следующей папке: \Users\<username>\AppData\Local\RibbonGenerator.

Вы можете его изменить. Если вы его удалите, он будет заново создан при следующем обращении к инструменту RibbonGenerator.

Что делает этот .bat-файл?
Давайте взглянем на содержимое «template.bat».

Код:
«C:\Program Files\Microsoft SDKs\Windows\v7.0\bin\UICC.exe» «{XmlFilename}» «{BmlFilename}» /res:»{RcFilename}»
«C:\Program Files\Microsoft SDKs\Windows\v7.0\bin\rc.exe» /v «{RcFilename}»
cmd /c «(«%VS100COMNTOOLS%..\..\VC\bin\vcvars32.bat») && («%VS100COMNTOOLS%..\..\VC\bin\link.exe» /VERBOSE /NOENTRY /DLL /OUT:»{DllFilename}» «{ResFilename}»)»

1. UICC.exe (включённый в состав Windows 7 SDK) генерирует файл определения ресурсов XAML-разметки ленты
2. rc.exe (также включённый в Windows 7 SDK) генерирует .res-файл — файл ресурсов Windows
3. link.exe (включённый в Visual Studio 2010 или Visual C++ 2010 Express) генерирует .dll-файл неуправляемой библиотеки. Это и есть .ribbon-файл, используемый контролом ленты!

Все переменные, заключённые в фигурные скобки, заменяются инструментом. Все создаваемые в процессе работы файлы удаляются после генерирования. Остаётся только .ribbon-файл {ResFilename}.

RibbonGenerator в экспресс-версиях Visual Studio 2010
Да, RibbonGenerator также работает и в экспресс-версиях Visual Studio 2010, но в версии 2.6 библиотеки вам понадобятся некоторые дополнительные приложения, чтобы инструмент заработал.

Требования:

  • Windows 7 SDK
  • Visual C++ 2010 Express
  • Visual C# или Basic 2010 Express

Обратите внимание, что вам нужно установить Visual C++ 2010 Express, поскольку она содержит файл «link.exe», необходимый для генерирования .ribbon-файлов.

Ручная регистрация специального инструмента
Поскольку установщик RibbonGenerator не включён в поставку в скомпилированном виде и поскольку экспресс-версии не поддерживают проектов установок, необходимо зарегистрировать специальный инструмент вручную.

1. Откройте решение «.\RibbonLib_v2.6\RibbonGenerator\RibbonGenerator.sln», игнорируя все ошибки
2. Скомпилируйте его
3. Установите RibbonGenerator.dll в GAC (Global Assembly Cache — англ. глобальный кэш сборок), используя gacutil.exe из командной строки Visual Studio 2010 (запущенной от имени администратора):

Код:
gacutil -i RibbonGenerator.dll

4. Зарегистрируйте специальный инструмент в экспресс-версии Visual Studio 2010. Простейший способ — изменить существующий .reg-файл в папке с исходниками RibbonGenerator (.\RibbonGenerator\RegisterCustomTool_VS2010.reg). Если у вас 64-разрядная операционная система, выберите файл RegisterCustomTool_VS2010_x64.reg.

Давайте посмотрим внутрь второго файла:

Код:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\CLSID\{B64582D9-A489-42F4-BA55-BB6039D82916}]
@=»RibbonGenerator»
«InprocServer32″=»C:\\WINDOWS\\system32\\mscoree.dll»
«Class»=»RibbonGenerator.CustomTool»
«Assembly»=»RibbonGenerator, Version=1.0.1.0, Culture=neutral, PublicKeyToken=3cf107c5d7e68b1c»
«ThreadingModel»=»Both»

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{164B10B9-B200-11D0-8C61-00A0C91E29D5}\RibbonGenerator]
@=»Ribbon Generator»
«CLSID»=»{B64582D9-A489-42F4-BA55-BB6039D82916}»
«GeneratesDesignTimeSource»=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{E6FDF8B0-F3D1-11D4-8576-0002A516ECE8}\RibbonGenerator]
@=»Ribbon Generator»
«CLSID»=»{B64582D9-A489-42F4-BA55-BB6039D82916}»
«GeneratesDesignTimeSource»=dword:00000001

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0\Generators\{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}\RibbonGenerator]
@=»Ribbon Generator»
«CLSID»=»{B64582D9-A489-42F4-BA55-BB6039D82916}»
«GeneratesDesignTimeSource»=dword:00000001

Всё, что нам теперь нужно сделать, — это вставить правильные ключи для экспресс-версий.

Для Visual Studio 2010 (64-разрядная операционная система):

Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\10.0

Для Visual C# 2010 Express (64-разрядная операционная система):

Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VCSExpress\10.0

Для Visual Basic 2010 Express (64-разрядная операционная система):

Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VBExpress\10.0

Заключение
На этом пока всё. Как мы видим, изменения в библиотеке произошли действительно достаточно серьёзные, поэтому пришлось немного прервать знакомство с функциями ленты Windows в .NET-приложениях и написать такую «техническую» статью.

В следующей статье мы, наконец, рассмотрим обещанные четыре элемента управления ленты: флажок (CheckBox), выключатель (ToggleButton), а также специфические контролы ленты DropDownColorPicker и FontControl.

Источник: thevista.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты