注意: この質問は更新されています。さらに下をお読みください。
やあ、
それぞれが独自の象限 (左上、右上、左下、右下) にある 4 つのサブメニューを持つカスタム コンテキスト メニューを作成したいと考えています。3ds Studio Max に似ています。
これは私がこれまでに問題に取り組んだ方法です: - カスタム WPF コントロールを作成し、ContextMenu[1] から派生させます
- ContextMenu の 4 つの依存関係プロパティを宣言します。これらは表示されるメニューになり、XAML から設定できます。
- ContextMenu.IsOpenProperty に AddOwner、プロパティ変更通知を追加。
- IsOpen プロパティが変更された場合、4 つの子コンテキスト メニューの IsOpen プロパティを設定します。
- ContextMenuService を使用して、コンテキスト メニューの垂直オフセットと水平オフセットを設定し、各象限に表示します。実際の高さと幅のプロパティをバインドしてオフセットを計算します。
[1] コンテキスト メニューから派生する必要があります。そうしないと、ウィンドウの ContextMenu プロパティに割り当てることができません。
これは機能しているように見えますが、メニューが開いたままにならないという問題があります(フォーカスがメニューの外にあるため、メニューが閉じられています) が、Reflector.NET を使用してこれを回避できると確信しています。
これは、私が作成しようとした最初のカスタム WPF コントロールです。これが最善のアプローチであるかどうかはわかりません。
このクワッド コンテキスト メニューの作成方法に関する提案/アイデアはありますか?