0

私はWPFポップアップの問題に頭を悩ませてきました.誰かが私を助けてくれることを望んでいます:)概要は次のようになります:

私たちのアプリは UIObjects のリストを保存します。これらはビューポート 3d (メンバー UIRenderObject を介して、その上にビットマップを持つ平らな正方形のメッシュ) とツリービュー (メンバー TreeViewItem を介して) に表示される要素を表します。

いずれの場合も、オブジェクトが右クリックを検出すると、ポップアップを開こうとします。そのためのコードは、あなたが得ることができるのと同じくらい簡単です:

ContextMenu contextMenu = new ContextMenu();

//add content

contextMenu.IsOpen = true;

ビューポートをクリックすると、すべてが期待どおりに機能します。ポップアップが開き、フォーカスが失われるか、選択が行われるまで開いたままになります。ただし、ツリー ビューでは、ポップアップはフォーカスを失い、すぐに閉じます。

フォーカスを明示的に設定し、PlacementTarget を明示的に設定し、ポップアップを開く呼び出しの前後にマウス イベントを処理済みとしてマークし、ポップアップを「StaysOpen」としてマークし、その他多数のことを試みましたが、それでもすぐに閉じます。 .

どんな助けでも大歓迎です。前もって感謝します!

4

2 に答える 2

0

ため息をつく、結局私は問題を複雑にしすぎていた。コンテキストメニューを自分で管理するのではなく、TreeViewItem自体のContextMenuに割り当てて、システムに処理させるのが方法でした。それは私を学びます。みんなの入力をありがとう:)

于 2009-12-09T08:20:05.883 に答える
-1

これが ContextMenu のデフォルトの動作です。別の方法として、ContextMenu の代わりに Popup クラスを使用することもできます。その後、要件に応じて拡張できます。

于 2009-12-07T17:35:35.363 に答える