Мне нужен элемент управления для вызова метода DragMove () для окна при нажатии MouseLeftButton, но при нажатии все равно он работает.
Если вызывается 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
});
Кто-нибудь есть лучше?