Partilhar via


Declarar comandos e controlos com a marcação do Ribbon

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.

Separar a apresentação da lógica de comando

A separação da apresentação e dos atributos visuais 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 escala, declarações de comando e especificações de recursos são o domínio de tempo de design de uma sintaxe de marcação declarativa baseada na especificação Extensible Application Markup Language (XAML). Funcionalidade de baixo nível, ganchos de aplicativo e manipuladores de comando são definidos em implementações de interface baseadas em COM (Component Object Model).

Essa separação entre 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 da Faixa de Opções independentemente da funcionalidade principal do aplicativo. Esta funcionalidade principal pode ser deixada para desenvolvedores de software dedicados.
  • Manutenção menos dispendiosa porque as alterações à GUI são possíveis sem alterações à funcionalidade principal (e vice-versa).
  • Especificação simples de recursos de string e imagem através de marcação.
  • Facilidade de prototipagem.

Estrutura de marcação

Existem duas ramificações distintas dentro da estrutura da Faixa de Opções.

A primeira ramificação contém um manifesto de declarações de comando e recurso (cadeias de caracteres e imagens). Cada entrada de comando é utilizada pela framework para associar um controlo Ribbon, através de um Command ID, a um gestor de comandos definido no código da aplicação.

A segunda ramificação contém as declarações de controlo reais. Cada controlo está associado a um Comando através de um atributo CommandName que faz a correspondência com um atributo Name especificado em cada declaração de Comando.

Componentes da faixa de opções

A funcionalidade da UI do framework da faixa de opções é revelada através de Modos de Exibição. Uma vista é essencialmente um contentor, como a Faixa de Opções e o Contexto Popup , que é usado para apresentar controles de estrutura e os comandos aos quais eles estão vinculados.

A Visualização da Faixa de Opções é composta por vários componentes que incluem um Menu de Aplicativo , a Barra de Ferramentas de Acesso Rápido (QAT) 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 rico sistema de menu de contexto do ContextPopup .

Todos os componentes da Barra de Ferramentas são declarados em um arquivo de marcação independente que:

Os dois exemplos de marcação da Faixa de Opções a seguir demonstram como um conjunto de itens do Menu do Aplicativo da Faixa de Opções estão associados a um nome e ID de Comando.

  1. Esta seção mostra as declarações de comando necessárias para um menu de 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 (Command Compiler), os nomes e IDs de comando são colocados em um arquivo de cabeçalho usado pelo aplicativo host da Faixa de Opções.

A seguir está um exemplo de um arquivo de cabeçalho gerado pelo 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)

Compilação da marcação da Faixa de Opções