Объявление команд и элементов управления с помощью разметки ленты
Платформа ленты Windows использует язык разметки на основе XAML для декларативной реализации внешнего вида приложения ленты.
Отделение презентации от командной логики
Разделение атрибутов представления и визуальных элементов от командной логики в платформе ленты осуществляется с помощью двух разных, но зависимых платформ разработки. Макеты элементов управления, поведение масштабирования, объявления команд и спецификации ресурсов — это область времени разработки декларативного синтаксиса разметки на основе спецификации XAML . Низкоуровневые функциональные возможности, перехватчики приложений и обработчики команд определяются в реализациях интерфейса на основе модели com.
Такое разделение представления и логики обеспечивает следующие преимущества:
- Более эффективный цикл разработки приложений, который позволяет разработчикам пользовательского интерфейса и конструкторам реализовывать графический пользовательский интерфейс приложения ленты независимо от основных функциональных возможностей приложения. Эту основную функциональность можно оставить на выделенных разработчиков программного обеспечения.
- Менее затратное обслуживание, так как изменения графического пользовательского интерфейса возможны без изменений в основных функциональных возможностях (и наоборот).
- Простая спецификация строковых ресурсов и ресурсов изображений с помощью разметки.
- Простота создания прототипов.
Структура разметки
В структуре разметки платформы ленты существуют две отдельные ветви.
Первая ветвь содержит манифест объявлений команд и ресурсов (строк и изображений). Каждая запись Command используется платформой для привязки элемента управления ленты с помощью идентификатора команды к обработчику команд, определенному в коде приложения.
Вторая ветвь содержит фактические объявления элементов управления. Каждый элемент управления связан с Command с помощью атрибута CommandName , который сопоставляется с атрибутом Name , указанным в каждом объявлении Command.
Компоненты ленты
Функциональность пользовательского интерфейса платформы ленты предоставляется через представления. Представление по сути является контейнером, например ribbon и ContextPopup, который используется для представления элементов управления платформы и команд, к которым они привязаны.
Представление ленты состоит из нескольких компонентов, которые включают меню приложения, панель быстрого доступа (QAT) для отображения часто используемых команд из пользовательского интерфейса ленты, основные и контекстные вкладки , содержащие группы элементов управления, а также полнофункциональная система контекстного меню ContextPopup.
Все компоненты ленты объявляются в отдельном файле разметки, который:
- Задает основные свойства для каждого элемента.
- Четкое отображение иерархических связей.
- Предоставляет параметры макета и указания по масштабированию. Дополнительные сведения о шаблонах макетов платформы ленты см. в разделе Настройка ленты с помощью определений размера и политик масштабирования.
- Предоставляет способ определения ресурсов, таких как изображения и метки. Дополнительные сведения о ресурсах изображений см. в разделе Указание ресурсов образа ленты.
В следующих двух примерах разметки ленты показано, как набор элементов меню приложения ленты связан с именем и идентификатором команды.
В этом разделе показаны объявления команд, необходимые для меню приложения с базовыми командами, такими как "Создать", "Открыть" и "Сохранить".
<!-- Command declarations for the Application Menu. --> <Command Name="cmdFileMenu" Symbol="ID_FILE_MENU" Id="25000" /> <!-- Command declaration for most recently used items. --> <Command Name="cmdMRUItems" Symbol="ID_FILE_MRUITEMS" Id="25050"/> <!-- Command declarations for Application Menu items. --> <Command Name="cmdNew" Symbol="ID_FILE_NEW" Comment="New" Id="25001" LabelTitle="&New"/> <Command Name="cmdOpen" Symbol="ID_FILE_OPEN" Comment="Open" Id="25002" LabelTitle="&&Open"/> <Command> <Command.Name>cmdSave</Command.Name> <Command.Symbol>ID_FILE_SAVE</Command.Symbol> <Command.Comment>Save</Command.Comment> <Command.Id>25003</Command.Id> <Command.LabelTitle> <String> <String.Content>Label for Save</String.Content> <String.Id>59999</String.Id> <String.Symbol>strSave</String.Symbol> </String> </Command.LabelTitle> <Command.TooltipTitle>Tooltip title with && for Save Command</Command.TooltipTitle> <Command.TooltipDescription>Tooltip description for Save Command.</Command.TooltipDescription> <Command.Keytip>s1</Command.Keytip> </Command> <Command Name="cmdPrint" Symbol="ID_FILE_PRINT" Comment="Save" Id="25004" LabelTitle="Print" /> <Command Name="cmdExit" Symbol="ID_FILE_EXIT" Comment="Exit" Id="25005" LabelTitle="Exit" />
В этом разделе показаны связанные объявления элемента управления.
<!-- Control declarations for Application Menu items. --> <Ribbon.ApplicationMenu> <ApplicationMenu CommandName="cmdFileMenu"> <!-- Most recently used items collection. --> <ApplicationMenu.RecentItems> <RecentItems CommandName="cmdMRUItems"/> </ApplicationMenu.RecentItems> <!-- Menu items collection. --> <MenuGroup> <Button CommandName="cmdNew" /> <Button CommandName="cmdOpen" /> <Button CommandName="cmdSave" /> </MenuGroup> <MenuGroup> <Button CommandName="cmdPrint" /> <Button CommandName="cmdExit" /> </MenuGroup> </ApplicationMenu> </Ribbon.ApplicationMenu>
При компиляции разметки с помощью средства компилятора команд пользовательского интерфейса (UICC) имена и идентификаторы команд помещаются в файл заголовка, используемый ведущим приложением ленты.
Ниже приведен пример файла заголовка, созданного UICC.
// *****************************************************************************
// * This is an automatically generated header file for UI Element definition *
// * resource symbols and values. Please do not modify manually. *
// *****************************************************************************
#pragma once
#define cmdFileMenu 25000
#define cmdNew 22001 /* New */
#define cmdNew_LabelTitle_RESID 60005
#define cmdOpen 22002 /* Open */
#define cmdOpen_LabelTitle_RESID 60006
#define cmdSave 22003 /* Save */
#define cmdSave_LabelTitle_RESID 60007
#define cmdSave_TooltipTitle_RESID 60008
#define cmdSave_TooltipDescription_RESID 60009
Связанные темы