我们有一个 WPF 应用程序,它在画布上具有自定义窗口,而该画布又包含自定义控件(包含自定义窗口的主画布再次是自定义控件显示内容)。所以基本上视觉树看起来像这样(没有隐含的边框和其他东西):
- Windows
- Canvas
- WindowMgr
- CustomWindow (maximized with z-index 0, functioning as background)
- ScrollPresenter
- CustomControl1
- CustomWindow
- ScrollPresenter
- CustomControl2
现在我们需要从这些自定义控件相互拖放(通常是从可移动窗口到背景窗口)。要显示拖放装饰器,需要一个装饰元素和一个装饰层。通常示例使用它们的网格或项目控件,并且还从同一元素获取装饰层。
在这里做同样的事情是行不通的,因为 ScrollPreseneter/CustomWindows 剪辑了它们的内容,这会阻止你拖出窗口。现在,我们沿着可视化树向上走,直到找到根画布并将其用作装饰元素,但这似乎有点脏(而且正如我们所经历的那样,它不是很健壮)。
有关于此的强大解决方案的任何建议?