Compartilhar via


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

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:

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.

  1. 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="&amp;New"/>
    <Command Name="cmdOpen"
             Symbol="ID_FILE_OPEN"
             Comment="Open"
             Id="25002"
             LabelTitle="&amp;&amp;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 &amp;&amp; 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" />
    
  2. 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

XAML (Extensible Application Markup Language)

Compilar a marcação da faixa de opções