次の方法で共有


MenuItem コントロールの種類

このトピックでは、MenuItem コントロールの種類に対する Microsoft UI オートメーションのサポートについて説明します。

メニュー コントロールを使用すると、コマンドとイベント ハンドラーに関連付けられた要素を階層的に編成できます。 一般的な Windows アプリケーションでは、メニュー バーにはいくつかのメニュー項目 (ファイル編集ウィンドウなど) が含まれており、各メニュー項目にはメニューが表示されます。 メニューには、メニュー項目のコレクション (NewOpenCloseなど) が含まれています。このコレクションを展開すると、追加のメニュー項目を表示したり、クリックしたときに特定のアクションを実行したりできます。

次のセクションでは、MenuItem コントロール型に必要な UI オートメーション ツリー構造、プロパティ、コントロール パターン、およびイベントを定義します。 UI オートメーションの要件は、UI フレームワーク/プラットフォームがコントロールの種類とコントロール パターンに対する UI オートメーションのサポートを統合するすべてのメニュー項目コントロールに適用されます。

このトピックには、次のセクションが含まれています。

一般的なツリー構造

次の表は、メニュー項目コントロールに関連する UI オートメーション ツリーの一般的なコントロールとコンテンツ ビューを示し、各ビューに含めることができる内容を示しています。 UI オートメーション ツリーの詳細については、「UI オートメーション ツリーの概要」を参照してください。

コントロール ビュー コンテンツ ビュー
  • MenuItem "ヘルプ"
    • メニュー (ヘルプ メニュー項目のサブメニュー)
      • MenuItem "ヘルプ トピック"
      • MenuItem "メモ帳について"
  • MenuItem "ヘルプ"
    • MenuItem "ヘルプ トピック"
    • MenuItem "メモ帳について"

 

メニュー項目コントロールのコントロール ビューには、上に示した UI オートメーション ツリー構造があります。 構造をわかりやすく説明するために、メニュー バーの ヘルプ のメニュー項目が追加されていることに注意してください。

コンテンツ ビューの場合、メニュー は、エンド ユーザーに意味のある情報を伝達しないため、UI オートメーション ツリーには表示されません。

関連するプロパティ

次の表に、MenuItem コントロール型に特に関連する値または定義を持つ UI オートメーション プロパティを示します。 UI オートメーション プロパティの詳細については、「UI オートメーション要素からプロパティを取得する」を参照してください。

UI オートメーション プロパティ 価値 筆記
UIA_AutomationIdPropertyId ノートを参照してください。 このプロパティの値は、UI オートメーション ツリーの生ビュー内のすべてのピア要素で一意である必要があります。 要素がユーザー インターフェイスの異なるインスタンス間で一貫性があることがわかっている場合は、メニュー項目に AutomationId プロパティを割り当てます。 メニュー項目が動的に設定され、予測できない場合は、AutomationId プロパティは空白のままにします。
UIA_BoundingRectanglePropertyId ノートを参照してください。 コントロール全体を含む最も外側の四角形。
UIA_ClickablePointPropertyId ノートを参照してください。 外接する四角形がある場合にサポートされます。 外接する四角形内のすべてのポイントがクリック可能でなく、要素が特殊なヒット テストを実行する場合は、オーバーライドしてクリック可能なポイントを指定します。
UIA_ControlTypePropertyId MenuItem
UIA_IsContentElementPropertyId メニュー項目コントロールは、常に UI オートメーション ツリーのコンテンツ ビューに含まれます。
UIA_IsControlElementPropertyId メニュー項目コントロールは、UI オートメーション ツリーのコントロール ビューに常に含まれます。
UIA_IsKeyboardFocusablePropertyId ノートを参照してください。 コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。
UIA_LocalizedControlTypePropertyId ノートを参照してください。 MenuItem コントロール型に対応するローカライズされた文字列。 既定値は、en-US または英語 (米国) の "メニュー項目" です。
UIA_NamePropertyId ノートを参照してください。 メニュー項目コントロールの名前は、ラベル付けするために使用されるテキストです。

 

必要なコントロール パターン

次の表に、メニュー項目コントロールでサポートするために必要な UI オートメーション コントロール パターンを示します。 コントロール パターンの詳細については、「UI オートメーション コントロール パターンの概要」を参照してください。

コントロール パターン 支える 筆記
IExpandCollapseProviderする 依存 コントロールを展開または折りたたむことができる場合は、IExpandCollapseProvider実装します。
IInvokeProvider 依存 コントロールが 1 つのアクションまたはコマンドを実行する場合は、IInvokeProvider実装します。
ISelectionItemProvider 依存 コントロールを使用してメニュー項目間のオプションの一覧から選択する場合は、ISelectionItemProviderを実装します。
IToggleProvider 依存 コントロールがオンまたはオフにできるオプションを表す場合は、IToggleProvider実装します。

 

必要なイベント

次の表は、メニュー項目コントロールがサポートするために必要な UI オートメーション イベントの一覧です。 イベントの詳細については、「UI オートメーション イベントの概要」を参照してください。

UI オートメーション イベント 筆記
UIA_AutomationFocusChangedEventId
プロパティ変更イベント UIA_BoundingRectanglePropertyId します。
プロパティ変更イベント UIA_ExpandCollapseExpandCollapseStatePropertyId します。 コントロールが ExpandCollapse コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。
UIA_Invoke_InvokedEventId コントロールが Invoke コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。
プロパティ変更イベントを UIA_IsEnabledPropertyId します。 コントロールが IsEnabled プロパティをサポートしている場合は、このイベントをサポートする必要があります。
プロパティ変更イベント UIA_IsOffscreenPropertyId します。 コントロールが IsOffscreen プロパティをサポートしている場合は、このイベントをサポートする必要があります。
UIA_SelectionItem_ElementAddedToSelectionEventId コントロールがコントロール パターン SelectionItem をサポートしている場合は、このイベントをサポートする必要があります。
UIA_SelectionItem_ElementRemovedFromSelectionEventId コントロールがコントロール パターン SelectionItem をサポートしている場合は、このイベントをサポートする必要があります。
UIA_SelectionItem_ElementSelectedEventId コントロールがコントロール パターン SelectionItem をサポートしている場合は、このイベントをサポートする必要があります。
UIA_StructureChangedEventId
プロパティ UIA_ToggleToggleStatePropertyId 変更されたイベントです。 コントロールが Toggle コントロール パターンをサポートしている場合は、このイベントをサポートする必要があります。

 

従来の問題

Microsoft Win32 メニュー項目の場合、トグル コントロール パターンは、メニュー項目がオンになっている場合にのみサポートされ、Toggle コントロール パターンのサポートが必要かどうかをプログラムで判断できます。 Win32 メニュー項目は、それがチェックできるかどうかを公開しないため、メニュー項目がチェックされていない場合、呼び出しコントロール パターンがサポートされます。 コントロールの呼び出しパターンは、トグル コントロール パターンをサポートするためにのみ必要なメニュー項目の場合でも、常にサポートされます。 これは、呼び出し コントロール パターンをサポートしていたメニュー項目 (メニュー項目がオフの場合) がチェックされたときにそのパターンをサポートしなくなった場合に、クライアントが混乱しないようにするためです。

概念

UI オートメーション コントロールの種類の概要

UI オートメーションの概要