没有Window_LocationChanged()的C#WPF DragMove

我在Windows窗体中实现了类似于DragMove的东西,但边界设置为主屏幕边距的10个单位。

当切换到WPF时,我发现这个线程对于实现相同的结果很有用。

但是,由于这是一个移动后事件,所发生的情况是,如果我的窗口被拖到我设置的边界之外,它会“跳回”。 我想避免这种影响,因为它看起来很糟糕。

有没有一种简单的方法可以避免在不使用LocationChanged事件的情况下将窗口移动到给定区域之外? 我基本上想要在窗口发生之前限制窗口的移动。

使用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了解更多信息。