共用方式為


使用功能區標記宣告命令和控制項

Windows 功能區架構會使用以可延伸應用程式標記語言 (XAML) 為基礎的標記語言,以宣告方式實作功能區應用程式的外觀。

分隔簡報與命令邏輯

功能區架構中,呈現與視覺屬性與命令邏輯的分離,是通過兩個不同但相互依賴的開發平台來完成的。 控件配置、調整行為、命令宣告和資源規格是宣告式標記語法的設計時間範圍,以 可延伸應用程式標記語言 (XAML) 規格為基礎。 低階功能、應用程式攔截和命令處理程式定義於元件物件模型 (COM) 型介面實作中。

這種呈現和邏輯的區隔提供下列優點:

  • 更有效率的應用程式開發週期,可讓 UI 開發人員和設計師在與核心應用程式功能相獨立的情況下實作功能區應用程式的 GUI。 此核心功能可以留給專用的軟體開發人員。
  • 成本較低的維護,因為可以變更 GUI,而不需要變更核心功能(反之亦然)。
  • 透過標記簡單指定字串和影像資源。
  • 簡化原型設計。

標記結構

功能區框架標記的架構中存在兩個不同的分支。

第一個分支包含命令和資源宣告的指令清單(字串和影像)。 架構會使用每個命令項目,透過命令標識碼,將功能區控制項綁定到應用程式代碼中定義的命令處理程式。

第二個分支包含實際的控件宣告。 每個控件都會透過 CommandName 屬性與 Command 建立關聯,此屬性會對應至每個 Command 宣告中指定的 Name 屬性。

功能區元件

功能區架構的UI功能是透過 視圖來公開的。 View 基本上是容器,例如 功能區ContextPopup,用來呈現架構控件及其系結的命令。

功能區 檢視是由數個元件所組成,包括 應用程式功能表快速存取工具列(QAT),用於顯示功能區 UI 中常用的指令,核心和內容 標籤 包含控制項 群組,以及 ContextPopup的豐富內容功能表系統。

所有功能區元件都會在獨立標記檔案中宣告,該檔案會:

下列兩個功能區標記範例示範一組功能區應用程式功能表單項如何分別與命令名稱和標識符相關聯。

  1. 本節顯示應用程式功能表所需的命令宣告,其中包含基本命令,例如 [新增]、[開啟] 和 [儲存]。

    <!-- 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. 本節顯示相關聯的 Control 宣告。

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

使用 UI Command Compiler (UICC) 工具編譯標記時,命令名稱和識別碼會被放入供 Ribbon 主應用程式使用的頭檔案中。

以下是 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)

編譯功能區(指令)標記