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