MyControl : ContentControl
| ContentProperty ________|__________ | | | Grid Canvas WrapPanel etc.. |_______|_________| | Drag Moving Childs
Таким образом, упрощается изменение типа панели, поддерживая такие логики, как масштабирование, панорамирование, перетаскивание дочерних элементов, реализованные в родительском элементе управления содержимым.
Проблемы с переопределением аранжировки / измерения, позиционирование мыши при перетаскивании стало адом. Кажется, все позиции смещены:
e.GetPosition(this.Content as Panel).X
заставляет перетаскиваемых детей двигаться с огромным смещением влево.
и
Translate(Point,UIElement)
кажется, не имеет никакого эффекта в любой комбинации вызова:
this.Content.Translate(Point,Children);
or
Child.Content.Translate(Point,this.Content);
ни пытаясь:
Offset(x,y)
до и после TranslateTransform или HitTest.
Отличный пример подобного сценария: http://www.codeproject.com/KB/WPF/zoomandpancontrol.aspx
Как я могу ИСПРАВИТЬ смещения перетаскивания в HitTesting/DragMove? Что именно я могу ИСПРАВИТЬ в Arrange/Measure Override, чтобы иметь рабочий TranslateTransform без смещения UnTranslable? Спасибо