2010-10-19 2 views
2

Я реализовал что-то в Windows Forms, подобное DragMove, но с границами, установленными на 10 единиц полей основного экрана.C# WPF DragMove без Window_LocationChanged()

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

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

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

ответ

2

Это очень трудно достичь с помощью 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 для получения дополнительной информации.

+0

Прикольно, это было легко peasy в WindowsForms ...: \ – biasedbit

Смежные вопросы