С# WPF DragMove без Window_LocationChanged()

Я реализовал в Windows Forms что-то похожее на DragMove, но с границами, установленными на 10 единиц полей основного экрана.

При переключении на WPF я обнаружил, что этот поток полезен для достижения того же результата.

Однако, поскольку это событие после перемещения, происходит следующее: если мое окно перетаскивается за установленные мной границы, оно «прыгает» назад. Я хотел бы избежать этого эффекта, так как он выглядит ужасно.

Есть ли простой способ избежать перемещения окна за пределы заданной области без использования события LocationChanged? В основном я хочу ограничить движение окна прежде чем это произойдет.


person biasedbit    schedule 19.10.2010    source источник


Ответы (1)


Этого очень трудно достичь с помощью WPF, потому что он не предоставляет базовые функции и события Win32, как это делали WinForms. У меня был проект, в котором мне нужно было изменить размер окна, и мне пришлось использовать PInvoke SetWindowPos, чтобы сделать это обычным образом.

AddHook может вам помочь, но это все равно будет довольно сложно. См. http://www.wpfmentor.com/2009/01/how-to-get-hwnd-and-hook-into-wndproc.html и http://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsource.addhook.aspx Чтобы получить больше информации.

person Pieter van Ginkel    schedule 19.10.2010
comment
Как ни странно, это было легко сделать в WindowsForms... :\ - person biasedbit; 21.10.2010