UI オートメーションによる MenuItem コントロール型のサポート

Note

このドキュメントは、System.Windows.Automation 名前空間で定義されているマネージド UI オートメーション クラスを使用する .NET Framework 開発者を対象としています。 UI オートメーションの最新情報については、Windows Automation API の「UI オートメーション」を参照してください。

このトピックでは、MenuItem コントロール型に対する Microsoft UI オートメーションのサポートについて説明します。 ここではコントロールの Microsoft UI オートメーション ツリー構造について説明し、MenuItem コントロール型に必要なプロパティとコントロール パターンを示します。

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

以降のセクションでは、MenuItem コントロール型に必要な UI オートメーション ツリーの構造、プロパティ、コントロール パターン、イベントを定義します。 この UI オートメーションの要件は、Windows Presentation Foundation (WPF)、Win32、または Windows フォームのいずれにおいても、すべてのリスト コントロールに適用されます。

必須の UI オートメーション ツリー構造

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

コントロール ビュー コンテンツ ビュー
MenuItem "Help"

  • Menu (Help メニュー項目のサブ メニュー)

    • MenuItem "Help Topics"
    • MenuItem "About Notepad"
MenuItem "Help"

- MenuItem "Help Topics"
- MenuItem "About Notepad"

メニュー項目コントロールのコントロール ビューには、上記の UI オートメーション ツリー構造があります。 メニューからサブメニューへの階層の典型的な構造をより良く表現するために、 [ヘルプ] メニュー項目が含まれていることにご注意ください。

コンテンツ ビューでは、UI オートメーション ツリーにメニューがありません。これは、メニューでは有用な情報がエンド ユーザーに提供されないためです。

必須の UI オートメーション プロパティ

次の表に、メニュー項目コントロールに特に関連する値または定義を持つ UI オートメーション プロパティを示します。 UI オートメーション プロパティの詳細については、「クライアントの UI オートメーション プロパティ」を参照してください。

プロパティ 説明
AutomationIdProperty 「ノート」を参照してください。 このプロパティの値は、アプリケーション内のすべてのコントロールで一意である必要があります。
BoundingRectangleProperty 「ノート」を参照してください。 コントロール全体を格納する最も外側の四角形。
ClickablePointProperty 「ノート」を参照してください。 四角形領域が存在する場合にサポートされます。 四角形領域内にクリック不可能な点が存在し、特別なヒット テストを実行する場合は、オーバーライドしてクリック可能な点を提供します。
IsKeyboardFocusableProperty 「ノート」を参照してください。 コントロールがキーボード フォーカスを受け取ることができる場合は、このプロパティをサポートする必要があります。
NameProperty 「ノート」を参照してください。 メニュー項目コントロールは UI オートメーション ツリーのコンテンツ ビューに含まれていて、それ自体により名前がラベル付けされます。
LabeledByProperty Null ラベルなし。
ControlTypeProperty MenuItem この値は、すべての UI フレームワークで同じです。
LocalizedControlTypeProperty "メニュー項目" MenuItem コントロール型に対応するローカライズされた文字列。
IsContentElementProperty メニュー項目コントロールは、UI オートメーション ツリーのコンテンツ ビューには含まれません。
IsControlElementProperty True メニュー項目コントロールは、UI オートメーション ツリーのコントロール ビューに常に含まれている必要があります。

必須の UI オートメーション コントロール パターン

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

コントロール パターン プロパティ サポート Notes
IExpandCollapseProvider 依存 コントロールを展開または折りたたむことができる場合は、 IExpandCollapseProviderを実装します。
IInvokeProvider 依存 コントロールが単一のアクションまたはコマンドを実行する場合は、 IInvokeProviderを実装します。
IToggleProvider 依存 コントロールがオンまたはオフを切り替えられるオプションを表す場合は、 IToggleProviderを実装します。
ISelectionItemProvider 依存 コントロールを使用してメニュー項目のオプションのリストから選ぶ場合は、 ISelectionItemProviderを実装します。

メニュー項目の UI オートメーション イベント

次の表に、メニュー項目コントロールに関連付けられている Microsoft UI オートメーション イベントを示します。

イベント サポート 説明
InvokedEvent 依存 コントロールが呼び出しコントロール パターンをサポートしている場合に、発生させる必要があります。
ToggleStateProperty プロパティ変更イベント。 依存 コントロールがトグル コントロール パターンをサポートしている場合に、発生させる必要があります。
ExpandCollapseStateProperty プロパティ変更イベント。 依存 コントロールが展開/折りたたみコントロール パターンをサポートしている場合に、発生させる必要があります。
ElementSelectedEvent 依存 [なし] :

必須の UI オートメーション イベント

次の表に、すべてのメニュー項目コントロールでサポートされる必要がある UI オートメーション イベントを示します。 イベントの詳細については、「 UI Automation Events Overview」を参照してください。

UI オートメーション イベント サポート/値 Notes
InvokedEvent 依存 なし
ElementAddedToSelectionEvent 依存 なし
ElementRemovedFromSelectionEvent 依存 なし
ElementSelectedEvent 依存 なし
BoundingRectangleProperty プロパティ変更イベント。 必須 なし
IsOffscreenProperty プロパティ変更イベント。 必須 なし
IsEnabledProperty プロパティ変更イベント。 必須 なし
ExpandCollapseStateProperty プロパティ変更イベント。 依存 なし
ToggleStateProperty プロパティ変更イベント。 依存 なし
AutomationFocusChangedEvent 必須 なし
StructureChangedEvent 必須 なし

既知の問題

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

関連項目