C # WPF - DragMove i kliknij
Potrzebuję kontrolki, aby wywołać DragMove () dla okna na MouseLeftButton w dół, ale nadal działać po kliknięciu.
Jeśli DragMove () jest wywoływane, Click i MouseLeftButtonUp nie są nigdy uruchamiane, ponieważ DragMove () jest połączeniem blokującym, dopóki nie zwolnią przycisku myszy.
Czy ktoś zna obejście tego problemu?
Wypróbowałem ten hack w oparciu o Thread.Sleep, który pozwala działać, jeśli jest szybszy niż 100 milisekund, ale nie działa niezawodnie dla użytkowników:
ThreadPool.QueueUserWorkItem(_ =>
{
Thread.Sleep(100);
Dispatcher.BeginInvoke((Action)
delegate
{
if (Mouse.LeftButton == MouseButtonState.Pressed)
{
window.DragMove();
}
});
});
EDYCJA: Cóż, ten hack zadziałał ...
window.DragMove();
RaiseEvent(new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, MouseButton.Left)
{
RoutedEvent = MouseLeftButtonUpEvent
});
Czy ktoś ma lepszy?