メニューとコンテキスト メニューは、外観と含めることができるものに似ています。 どちらも、コマンドまたはオプションの整理された一覧を表示し、ユーザーが必要になるまで非表示にして領域を節約します。 ただし、作成に使用する内容や、ユーザーがアクセスする方法など、それらの間には違いがあります。
これは適切なコントロールですか?
メニューとコンテキスト メニューは、コマンドを整理し、ユーザーが必要になるまでそれらのコマンドを非表示にして領域を節約するために使用されます。 通知や確認要求などの任意のコンテンツを表示するには、 ダイアログまたはポップアップを使用します。
特定のコマンドが頻繁に使用され、使用可能な領域がある場合は、ユーザーがメニューを使用してアクセスする必要がないように、独自の要素に直接配置することを検討してください。
メニューまたはコンテキスト メニューを使用する必要がある場合
- ホスト要素がボタンまたはその他のコマンド要素であり、その主な役割が追加のコマンドを表示する場合は、メニューを使用します。
- ホスト要素が、別の主な目的 (テキストや画像の表示など) を持つ他の種類の要素である場合は、コンテキスト メニューを使用します。
テキストまたはイメージ要素にコマンド (切り取り、コピー、貼り付けなど) を追加する場合は、メニューではなくコンテキスト メニューを使用します。 このシナリオでは、テキスト要素の主な役割は、テキストの表示と編集です。その他のコマンド (切り取り、コピー、貼り付けなど) はセカンダリであり、コンテキスト メニューに属します。
コンテキスト メニュー
コンテキスト メニューには、次の特性があります。
- 1 つの要素にアタッチされ、セカンダリ コマンドを表示します。
- 右クリック (または、指で長押しするなど、同等の操作) によって呼び出されます。
- ContextFlyout プロパティを使用して要素に関連付けられます。
コンテキスト メニューに共通のコマンド (コピー、切り取り、貼り付け、削除、共有、テキスト選択コマンドなど) が含まれる場合は、 コマンド バーのポップアップ を使用し、これらの一般的なコマンドをプライマリ コマンドとしてグループ化して、コンテキスト メニューに 1 行の水平行として表示されるようにします。
コンテキスト メニューに一般的なコマンドが含まれていない場合は、 コマンド バーのポップアップ または メニュー ポップアップ を使用してコンテキスト メニューを表示できます。 CommandBarFlyout は MenuFlyout よりも多くの機能を提供し、必要に応じて、セカンダリ コマンドのみを使用して MenuFlyout の同じ動作と外観を実現できるため、使用することをお勧めします。
メニュー
メニューには、次の特性があります。
- 常に表示される 1 つのエントリ ポイント (たとえば、画面の上部にある [ファイル] メニュー) があります。
- 通常、ボタンまたは親メニュー項目にアタッチされます。
- 左クリック (または、指でタップするなど、同等のアクション) によって呼び出されます。
- Flyout プロパティまたは FlyoutBase.AttachedFlyout プロパティを使用して要素に関連付けられるか、アプリ ウィンドウの上部にあるメニュー バーにグループ化されます。
ユーザーがコマンド要素 (ボタンなど) を呼び出し、その主な役割が追加のコマンドを表示する場合は、 メニュー ポップアップ を使用して、キャンバス上の UI 要素にアタッチされたポップアップとしてインラインで表示される単一のトップレベル メニューをホストします。 各 MenuFlyout では、メニュー項目とサブメニューをホストできます。 より多くの組織またはグループ化が必要になる可能性があるアプリの場合は、 メニュー バー を使用して、複数のトップレベル メニューのセットを水平方向の行に表示する簡単な方法として使用します。
関連資料
Windows developer