リボン マークアップを使用してコマンドとコントロールを宣言する
Windows リボン フレームワークでは、拡張アプリケーション マークアップ言語 (XAML) に基づくマークアップ言語を使用して、リボン アプリケーションの外観を宣言的に実装します。
コマンド ロジックからのプレゼンテーションの分離
リボン フレームワークのコマンド ロジックからのプレゼンテーション属性とビジュアル属性の分離は、2 つの異なる、ただし依存する開発プラットフォームによって実現されます。 コントロール レイアウト、スケーリング動作、コマンド宣言、およびリソース仕様は、 拡張アプリケーション マークアップ言語 (XAML) 仕様に基づく宣言型マークアップ構文のデザイン時ドメインです。 低レベルの機能、アプリケーション フック、およびコマンド ハンドラーは、コンポーネント オブジェクト モデル (COM) ベースのインターフェイス実装で定義されています。
このプレゼンテーションとロジックの分離には、次の利点があります。
- UI 開発者とデザイナーが、コア アプリケーション機能とは別にリボン アプリケーションの GUI を実装できるようにする、より効率的なアプリケーション開発サイクル。 このコア機能は、専用のソフトウェア開発者に任せる場合があります。
- GUI の変更はコア機能に変更を加えることなく可能であるため、コストのかからないメンテナンスが可能です (その逆も同様です)。
- マークアップを使用した文字列リソースとイメージ リソースの単純な指定。
- プロトタイプ作成の容易さ。
マークアップ構造
リボン フレームワーク マークアップの構造内には、2 つの異なる分岐が存在します。
最初のブランチには、Command とリソース宣言 (文字列とイメージ) のマニフェストが含まれています。 各 Command エントリは、アプリケーション コードで定義されているコマンド ハンドラーに、コマンド ID を介してリボン コントロールをバインドするためにフレームワークによって使用されます。
2 番目の分岐には、実際のコントロール宣言が含まれています。 各コントロールは、各 Command 宣言で指定された Name 属性にマップされる CommandName 属性を使用して Command に関連付けられます。
リボン コンポーネント
リボン フレームワークの UI 機能は、 ビューを介して公開されます。 ビューは基本的に、 リボン や ContextPopup などのコンテナーであり、フレームワーク コントロールとバインドされているコマンドを表示するために使用されます。
リボン ビューは、アプリケーション メニュー、リボン UI からよく使用されるコマンドを表示するためのクイック アクセス ツール バー (QAT)、コントロールのグループを含むコア タブとコンテキスト タブ、および ContextPopup のリッチ コンテキスト メニュー システムを含む複数のコンポーネントで構成されています。
すべてのリボン コンポーネントは、次のスタンドアロン マークアップ ファイルで宣言されます。
- 各要素の基本プロパティを指定します。
- 階層リレーションシップを明確に表示します。
- レイアウト設定とスケーリング ヒントを提供します。 リボン フレームワーク レイアウト テンプレートの詳細については、「 サイズ定義とスケーリング ポリシーによるリボンのカスタマイズ」を参照してください。
- イメージやラベルなどのリソースを定義する方法を提供します。 イメージ リソースの詳細については、「 リボン イメージ リソースの指定」を参照してください。
次の 2 つのリボン マークアップの例は、リボン アプリケーション メニュー項目のセットがコマンド名と ID に関連付けられている方法を示しています。
このセクションでは、アプリケーション メニューに必要なコマンド宣言と、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="&New"/> <Command Name="cmdOpen" Symbol="ID_FILE_OPEN" Comment="Open" Id="25002" LabelTitle="&&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 && 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" />
このセクションでは、関連する 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
関連トピック