Udostępnij za pośrednictwem


Deklarowanie poleceń i kontrolek za pomocą znaczników wstążki

Struktura wstążki systemu Windows używa języka znaczników opartego na rozszerzalnym języku znaczników aplikacji (XAML) do deklaratywnego implementowania wyglądu aplikacji wstążki.

Oddzielanie prezentacji od logiki poleceń

Rozdzielenie atrybutów prezentacji i wizualizacji z logiki poleceń w strukturze wstążki odbywa się za pomocą dwóch odrębnych, ale zależnych platform programistycznych. Układy kontrolek, zachowania skalowania, deklaracje poleceń i specyfikacje zasobów to domena czasu projektowania składni znaczników deklaratywnych oparta na specyfikacji Extensible Application Markup Language (XAML). Funkcje niskiego poziomu, hooki aplikacyjne i obsługiwacze poleceń są definiowane w implementacjach interfejsu opartych na modelu obiektów składników (COM).

Ta separacja prezentacji i logiki zapewnia następujące korzyści:

  • Bardziej wydajny cykl tworzenia aplikacji, który umożliwia deweloperom i projektantom interfejsu użytkownika zaimplementowanie graficznego interfejsu użytkownika aplikacji typu Ribbon niezależnie od podstawowych funkcji aplikacji. Ta podstawowa funkcjonalność może pozostać przeznaczona dla dedykowanych deweloperów oprogramowania.
  • Mniej kosztowna konserwacja, ponieważ zmiany w graficznym interfejsie użytkownika są możliwe bez zmian w podstawowych funkcjach (i odwrotnie).
  • Prosta specyfikacja zasobów ciągów i obrazów za pomocą znaczników.
  • Łatwość tworzenia prototypów.

Struktura znaczników

W strukturze znaczników frameworku wstążki istnieją dwie odrębne gałęzie.

Pierwsza sekcja zawiera manifest deklaracji poleceń i zasobów (ciągi znaków i obrazy). Każdy wpis polecenia jest używany przez platformę do powiązania kontrolki wstążki za pomocą identyfikatora polecenia z procedurą obsługi poleceń zdefiniowaną w kodzie aplikacji.

Druga gałąź zawiera rzeczywiste deklaracje sterujące. Każda kontrolka jest skojarzona z poleceniem za pomocą atrybutu CommandName, który jest mapowany na atrybut Name określony w każdej deklaracji polecenia.

Składniki wstążki

Funkcje interfejsu użytkownika platformy wstążki są udostępniane za pośrednictwem widoków . Widok jest zasadniczo kontenerem, takim jak wstążka i kontekstowe okienko, który jest używany do prezentowania kontrolek platformy oraz poleceń, z którymi są powiązane.

Widok wstążki składa się z kilku składników, które obejmują: menu aplikacji, pasek narzędzi szybkiego dostępu (QAT) do wyświetlania często używanych poleceń z interfejsu użytkownika wstążki, karty podstawowe i kontekstowe , które zawierają grupy kontrolek, oraz rozbudowany system menu kontekstowego ContextPopup.

Wszystkie składniki wstążki są deklarowane w autonomicznym pliku znaczników, który:

W poniższych dwóch przykładach znaczników wstążki pokazano, jak zestaw elementów menu aplikacji wstążki jest skojarzony z nazwą polecenia i identyfikatorem.

  1. W tej sekcji przedstawiono deklaracje poleceń wymagane dla menu aplikacji z podstawowymi poleceniami, takimi jak Nowe, Otwórz i Zapisz.

    <!-- 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. W tej sekcji przedstawiono skojarzone deklaracje elementów sterujących.

    <!-- 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>
    

Po skompilowaniu znaczników za pomocą narzędzia kompilatora poleceń UI (UICC), nazwy poleceń i identyfikatory są umieszczane w pliku nagłówkowym używanym przez aplikację hostującą wstążkę.

Poniżej przedstawiono przykład pliku nagłówka wygenerowanego przez 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

Rozszerzalny Język Znaczników Aplikacji (XAML)

kompilowanie znaczników wstążki