2010-10-19 71 views
2

我在Windows窗體中實現了一些類似於DragMove的東西,但邊界被設置爲10個單位的主屏幕邊距。C#WPF DragMove without 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.htmlhttp://msdn.microsoft.com/en-us/library/system.windows.interop.hwndsource.addhook.aspx

+0

有趣的是,這在WindowsForms中很容易:... \ – biasedbit 2010-10-20 23:31:53