次の方法で共有


リボン マークアップを使用してコマンドとコントロールを宣言する

Windows リボン フレームワークでは、拡張アプリケーション マークアップ言語 (XAML) に基づくマークアップ言語を使用して、リボン アプリケーションの外観を宣言的に実装します。

コマンド ロジックからのプレゼンテーションの分離

リボン フレームワークのコマンド ロジックからのプレゼンテーション属性とビジュアル属性の分離は、2 つの異なる、ただし依存する開発プラットフォームによって実現されます。 コントロール レイアウト、スケーリング動作、コマンド宣言、およびリソース仕様は、 拡張アプリケーション マークアップ言語 (XAML) 仕様に基づく宣言型マークアップ構文のデザイン時ドメインです。 低レベルの機能、アプリケーション フック、およびコマンド ハンドラーは、コンポーネント オブジェクト モデル (COM) ベースのインターフェイス実装で定義されています。

このプレゼンテーションとロジックの分離には、次の利点があります。

  • UI 開発者とデザイナーが、コア アプリケーション機能とは別にリボン アプリケーションの GUI を実装できるようにする、より効率的なアプリケーション開発サイクル。 このコア機能は、専用のソフトウェア開発者に任せる場合があります。
  • GUI の変更はコア機能に変更を加えることなく可能であるため、コストのかからないメンテナンスが可能です (その逆も同様です)。
  • マークアップを使用した文字列リソースとイメージ リソースの単純な指定。
  • プロトタイプ作成の容易さ。

マークアップ構造

リボン フレームワーク マークアップの構造内には、2 つの異なる分岐が存在します。

最初のブランチには、Command とリソース宣言 (文字列とイメージ) のマニフェストが含まれています。 各 Command エントリは、アプリケーション コードで定義されているコマンド ハンドラーに、コマンド ID を介してリボン コントロールをバインドするためにフレームワークによって使用されます。

2 番目の分岐には、実際のコントロール宣言が含まれています。 各コントロールは、各 Command 宣言で指定された Name 属性にマップされる CommandName 属性を使用して Command に関連付けられます。

リボン コンポーネント

リボン フレームワークの UI 機能は、 ビューを介して公開されます。 ビューは基本的に、 リボンContextPopup などのコンテナーであり、フレームワーク コントロールとバインドされているコマンドを表示するために使用されます。

リボン ビューは、アプリケーション メニュー、リボン UI からよく使用されるコマンドを表示するためのクイック アクセス ツール バー (QAT)、コントロールのグループを含むコア タブとコンテキスト タブおよび ContextPopup のリッチ コンテキスト メニュー システムを含む複数のコンポーネントで構成されています。

すべてのリボン コンポーネントは、次のスタンドアロン マークアップ ファイルで宣言されます。

次の 2 つのリボン マークアップの例は、リボン アプリケーション メニュー項目のセットがコマンド名と ID に関連付けられている方法を示しています。

  1. このセクションでは、アプリケーション メニューに必要なコマンド宣言と、New、Open、Save などの基本的なコマンドを示します。

    <!-- 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) ツールを使用してマークアップをコンパイルすると、コマンド名と ID がリボン ホスト アプリケーションで使用されるヘッダー ファイルに配置されます。

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)

リボン マークアップのコンパイル