共用方式為


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

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

分隔簡報與命令邏輯

功能區架構中的呈現和視覺屬性與命令邏輯分離是透過兩個不同的開發平臺來完成。 控制項配置、調整行為、命令宣告和資源規格是宣告式標記語法的設計階段領域,以 可延伸應用程式標記語言 (XAML) 規格為基礎。 低階功能、應用程式勾點和命令處理常式定義于元件物件模型 (COM) 型介面實作中。

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

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

標記結構

功能區架構標記的結構內有兩個不同的分支。

第一個分支包含命令和資源宣告的資訊清單, (字串和資源宣告) 。 架構會使用每個 Command 專案,透過命令識別碼將功能區控制項系結至應用程式程式碼中定義的 Command 處理常式。

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

功能區元件

功能區架構 UI 功能是透過 檢視公開。 檢視基本上是一個容器,例如 功能區和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 命令編譯器 (UICC) 工具編譯標記時,命令名稱和識別碼會放入功能區主應用程式所使用的標頭檔中。

以下是 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 (可延伸應用程式標記語言)

編譯功能區標記