我需要一個控件來調用DragLevelButton上的DragMove(),但在點擊時仍然有效。C#WPF - DragMove並點擊
如果調用DragMove(),則不會觸發Click和MouseLeftButtonUp,因爲DragMove()是一個阻塞調用,直到它們釋放鼠標按鈕爲止。
有沒有人知道一個解決方法,使這項工作?
我曾嘗試基於此Thread.sleep代碼破解它允許一個點擊工作,如果它比100毫秒更快,但它沒有爲用戶可靠地工作:
ThreadPool.QueueUserWorkItem(_ =>
{
Thread.Sleep(100);
Dispatcher.BeginInvoke((Action)
delegate
{
if (Mouse.LeftButton == MouseButtonState.Pressed)
{
window.DragMove();
}
});
});
編輯:嗯,這黑客工作。 ..
window.DragMove();
RaiseEvent(new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, MouseButton.Left)
{
RoutedEvent = MouseLeftButtonUpEvent
});
任何人都有更好的嗎?
你在做什麼,需要點擊/鼠標拖動窗口? – 2009-12-16 19:51:14
我們的設計在允許DragMove的角落有一個圖標,但是如果您點擊它,它會切換窗口部分面板的擴展。 – jonathanpeppers 2009-12-16 20:02:54