У нас есть приложение WPF, которое имеет настраиваемые окна на холсте, которые, в свою очередь, содержат настраиваемые элементы управления (основной холст, содержащий настраиваемые окна, снова представляет собой пользовательский элемент управления, отображающий материал). Итак, в основном визуальное дерево выглядит так (без неявных границ и прочего):
- Windows
- Canvas
- WindowMgr
- CustomWindow (maximized with z-index 0, functioning as background)
- ScrollPresenter
- CustomControl1
- CustomWindow
- ScrollPresenter
- CustomControl2
Теперь нам нужно перетаскивать эти пользовательские элементы управления друг на друга (обычно из подвижного окна в фоновое окно). Чтобы отобразить перетаскиваемый элемент оформления, необходимы украшенный элемент и слой элемента оформления. Обычно в примерах для этого используется их сетка или элементы управления, а также слой рекламного элемента из того же элемента.
То же самое здесь не работает, так как ScrollPreseneter / CustomWindows обрезают их содержимое, что предотвращает перетаскивание из окна. Пока мы идем по визуальному дереву, пока не найдем корневой холст и не используем его в качестве украшенного элемента, но это выглядит немного грязно (и, как мы поняли, не очень надежно).
Какие-нибудь предложения относительно надежного решения для этого?