Declarando comandos e controles com a marcação da faixa de opções
A estrutura da Faixa de Opções do Windows usa uma linguagem de marcação baseada em XAML (Extensible Application Markup Language) para implementar declarativamente a aparência de um aplicativo da Faixa de Opções.
- Separando a apresentação da lógica de comando
- Estrutura de marcação
- Componentes da Faixa de Opções
- Tópicos relacionados
Separando a apresentação da lógica de comando
A separação de atributos visuais e de apresentação da lógica de comando na estrutura da Faixa de Opções é realizada por meio de duas plataformas de desenvolvimento distintas, mas dependentes. Layouts de controle, comportamentos de dimensionamento, declarações de comando e especificações de recurso são o domínio de tempo de design de uma sintaxe de marcação declarativa com base na especificação XAML (Extensible Application Markup Language ). A funcionalidade de baixo nível, os ganchos de aplicativo e os manipuladores de comando são definidos em implementações de interface baseadas em COM (Component Object Model).
Essa separação de apresentação e lógica oferece os seguintes benefícios:
- Um ciclo de desenvolvimento de aplicativos mais eficiente que permite que desenvolvedores e designers de interface do usuário implementem a GUI do aplicativo Ribbon independentemente da funcionalidade principal do aplicativo. Essa funcionalidade principal pode ser deixada para desenvolvedores de software dedicados.
- Manutenção menos dispendiosa porque as alterações na GUI são possíveis sem alterações na funcionalidade principal (e vice-versa).
- Especificação simples de recursos de cadeia de caracteres e imagem por meio da marcação.
- Facilidade de prototipagem.
Estrutura de marcação
Existem dois branches distintos dentro da estrutura da marcação da estrutura da Faixa de Opções.
O primeiro branch contém um manifesto de declarações de comando e recurso (cadeias de caracteres e imagens). Cada entrada de Comando é usada pela estrutura para associar um controle de Faixa de Opções, por meio de uma ID de Comando, a um manipulador de comando definido no código do aplicativo.
O segundo branch contém as declarações de controle reais. Cada controle é associado a um Comando por meio de um atributo CommandName que é mapeado para um atributo Name especificado em cada declaração command.
Componentes da Faixa de Opções
A funcionalidade da interface do usuário da estrutura da faixa de opções é exposta por meio de Exibições. Um Modo de Exibição é essencialmente um contêiner, como a Faixa de Opções e o ContextPopup, que é usado para apresentar controles de estrutura e os Comandos aos quais eles estão associados.
O Modo de Exibição da Faixa de Opções é composto por vários componentes que incluem um Menu de Aplicativo, a QAT (Barra de Ferramentas de Acesso Rápido) para exibir comandos comumente usados da interface do usuário da faixa de opções, guias principais e contextuais que contêm grupos de controles e o sistema de menus de contexto avançado do ContextPopup.
Todos os componentes da Faixa de Opções são declarados em um arquivo de marcação autônomo que:
- Especifica as propriedades básicas para cada elemento.
- Mostra claramente relações hierárquicas.
- Fornece preferências de layout e dicas de dimensionamento. Para obter mais informações sobre modelos de layout da estrutura da Faixa de Opções, consulte Personalizando uma faixa de opções por meio de definições de tamanho e políticas de dimensionamento.
- Fornece uma maneira de definir recursos como imagens e rótulos. Para obter mais informações sobre recursos de imagem, consulte Especificando recursos de imagem da faixa de opções.
Os dois exemplos de marcação da Faixa de Opções a seguir demonstram como um conjunto de itens do Menu de Aplicativo da Faixa de Opções está associado a um nome de comando e uma ID.
Esta seção mostra as declarações de comando necessárias para um Menu do Aplicativo com comandos básicos como Novo, Abrir e Salvar.
<!-- 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" />
Esta seção mostra as declarações de Controle associadas.
<!-- 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>
Quando a marcação é compilada com a ferramenta UICC (Compilador de Comandos da Interface do Usuário), os nomes de comando e as IDs são colocados em um arquivo de cabeçalho usado pelo aplicativo host da Faixa de Opções.
Veja a seguir um exemplo de um arquivo de cabeçalho gerado pela 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
Tópicos relacionados