キャンバス上にカスタム コントロールを含むカスタム ウィンドウを持つ WPF アプリケーションがあります (カスタム ウィンドウを含むメイン キャンバスは、再びカスタム コントロールを表示します)。したがって、基本的にビジュアル ツリーは次のようになります (暗黙的な境界線やその他のものは除きます)。
- Windows
- Canvas
- WindowMgr
- CustomWindow (maximized with z-index 0, functioning as background)
- ScrollPresenter
- CustomControl1
- CustomWindow
- ScrollPresenter
- CustomControl2
ここで、これらのカスタム コントロールを相互にドラッグ アンド ドロップする必要があります (通常は、移動可能なウィンドウからバックグラウンド ウィンドウへ)。ドラッグ アンド ドロップの装飾を表示するには、装飾された要素と装飾レイヤーが必要です。通常、例ではそのために grid または itemscontrol を使用し、同じ要素から adorner レイヤーも取得します。
ScrollPreseneter/CustomWindows がコンテンツをクリップしてウィンドウの外にドラッグできないため、ここで同じことを行っても機能しません。今のところ、ルート キャンバスが見つかるまでビジュアル ツリーをたどり、それを装飾された要素として使用しますが、それはちょっと汚れているように見えます (そして、私たちが経験したように、あまり堅牢ではありません)。
これに対する堅牢なソリューションに関する提案はありますか?