実行時に生成できる動的なコンテキストメニューを作成するためのソリューションを考え出そうとしています。IGuiCommand
通常のコマンドパターンに似たものを実装するインターフェイスを実装しました。
interface IGuiCommand
{
Execute();
Undo();
bool CanUndo {get;set;}
Redo();
string CommandName {get;set;}
string CommandDescription {get;set;}
}
アイデアは、右クリックされたコントロールがそれ自身のコマンドのリストを送信して、特定のコンテキストメニューに表示できるようにすることです。
各コントロールにコンテキストメニューを作成させることもできますが、単一のコンテキストメニューを使用し、メニューを動的に生成して、実行時の管理を容易にすることをお勧めします。制御状態またはアプリケーション状態が変化した場合、コンテキストメニューにその変化を反映させたいのですが。たとえば、チェックボックスを右クリックすると、チェックボックスはコンテキストメニューに送信され、チェックボックスの現在のチェック値に応じて[有効]または[無効]コマンドが表示されます。
特定のコントロールのコンテキストメニューを表示するために、どのコントロールが「右クリック」されたかを知る方法があれば、これを簡単に実装できると思います。
イベントが右クリックされたコントロール(またはコンテキストメニューをポップアップさせるコマンド)を示すものをContextMenu
提供しないのは驚くべきことのようです。EventArg