Wpf 使用DragMove移动窗口时捕捉鼠标移动
我有一个无边界的WPF窗口(WindowStyle=“None”),可以通过捕获LeftMouseDown然后调用DragMove来移动它。那很好 但是,我想防止窗口的任何部分离开屏幕区域。 我捕捉到位置已更改,但在窗口已经移动后调用,因此在该事件中对窗口位置所做的任何更改都会导致窗口跳回,这看起来非常不专业 我是否可以捕捉到在实际移动窗口之前触发的事件。 我试过MouseMove和PreviewMouseMove,但它们在DragMove期间没有被解雇 这些东西在WinForms中运行良好 是否有人对此有解决方案,或者这仅仅是由于WPF的不成熟性质和状态 这些东西在WinForms中运行良好 是的,但另一方面,WinForms没有Wpf 使用DragMove移动窗口时捕捉鼠标移动,wpf,window,move,mousemove,Wpf,Window,Move,Mousemove,我有一个无边界的WPF窗口(WindowStyle=“None”),可以通过捕获LeftMouseDown然后调用DragMove来移动它。那很好 但是,我想防止窗口的任何部分离开屏幕区域。 我捕捉到位置已更改,但在窗口已经移动后调用,因此在该事件中对窗口位置所做的任何更改都会导致窗口跳回,这看起来非常不专业 我是否可以捕捉到在实际移动窗口之前触发的事件。 我试过MouseMove和PreviewMouseMove,但它们在DragMove期间没有被解雇 这些东西在WinForms中运行良好 是
DragMove
。。。您可以尝试使用与WinForms中相同的方法,通过处理MouseMove
并自己移动窗口
另一个选项是使用强制值回调
覆盖顶部
和左侧
依赖项属性的元数据,以防止窗口离开屏幕。不过,我不确定这是否行得通
这些东西在WinForms中运行良好
是的,但另一方面,WinForms没有DragMove
。。。您可以尝试使用与WinForms中相同的方法,通过处理MouseMove
并自己移动窗口
另一个选项是使用
强制值回调
覆盖顶部
和左侧
依赖项属性的元数据,以防止窗口离开屏幕。不确定这是否有效,但是…我没有使用强制值回调方法(如果任何人有此方法的解决方案,请分享)
我的解决方案:
截获WPF WndProc中的WM_WindowPosChangeing消息。在这里发布解决方案有点长,但这里有两个链接让我走上了正确的轨道:
(在这一链接中有一些反对者表示WndProc不会与WPF合作。
我不能用那种一般的方式来评论这句话,但在这种特殊情况下,它就像一种魅力。)
将OnPreviewPositionChange的主体放在WndProc中。我没有使用强制值回调方法(如果任何人有此方法的解决方案,请共享) 我的解决方案: 截获WPF WndProc中的WM_WindowPosChangeing消息。在这里发布解决方案有点长,但这里有两个链接让我走上了正确的轨道: (在这一链接中有一些反对者表示WndProc不会与WPF合作。 我不能用那种一般的方式来评论这句话,但在这种特殊情况下,它就像一种魅力。)
将OnPreviewPositionChange的主体放入WndProc。谢谢,托马斯。我会调查的,谢谢,托马斯。我会调查的。