Дочерние панели ContentControl Arrange/Measure

                            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? Спасибо


person The Magnificient Macak    schedule 06.11.2011    source источник
comment
ого, как много текста. может быть, вы можете разбить это для нас на несколько конкретных вопросов?   -  person Robert Levy    schedule 06.11.2011


Ответы (2)


Наконец-то у меня есть немного времени, чтобы продолжить свой проект, и, наконец, погуглив, я нашел интересный и действительно полезный ответ на систему координат WPF:

http://www.xtremevbtalk.com/showthread.php?t=322142

Вот и все. Ответил сам. Если у меня будет время опубликовать статью об этом, я буду рад. Спасибо всем людям за интерес. Если кто-то захочет ответить, буду рад.

person The Magnificient Macak    schedule 10.11.2011

Наконец я нашел отправную точку:

http://forums.silverlight.net/t/20520.aspx

Я предполагаю, что макет моего контента (панели), очевидно, зависит от его контейнера: в этой ссылке есть что-то похожее на ответ, который я искал, но он не объясняет четко, как дочерняя панель в ContentControl точно изменяется ее родительским ContentControl: Как он будет упорядочивать свои дочерние элементы? До сих пор я могу гарантировать, что ПАНЕЛЬ ВНУТРИ элемента управления содержимым НЕ упорядочивает/измеряет свои дочерние элементы, как в исходном (не вложенном) поведении. Что мне следует изменить ТОЧНО в ContentControl, чтобы иметь холст с «Расстановкой холста и мерой холста»? Нужно ли мне изменять его ContentPresenter? Если да, то как? Новости после более глубокого гугления или после того, как кто-то решит до меня! Спасибо!

person The Magnificient Macak    schedule 08.11.2011