Событие Button.MouseMove в WPF всегда имеет e.LeftMouse со статусом «Выпущено». ⇐ C#
-
Anonymous
Событие Button.MouseMove в WPF всегда имеет e.LeftMouse со статусом «Выпущено».
Я пытаюсь начать перетаскивание элемента управления Button в WPF. Я использую кнопку, потому что мне также нужно обрабатывать событие щелчка.
При добавлении кнопки в XAML и обработке события MouseMove всегда e.LeftMouse равен MouseButtonState.Released.
В следующей реализации обработчика исключение никогда не создается.
private void Button_MouseMove(отправитель объекта, MouseEventArgs e) { если (e.LeftButton == MouseButtonState.Pressed) throw new Exception("Это работает!"); } Я заметил, что то же самое справедливо для любого элемента управления, который я помещаю внутрь кнопки и пытаюсь обработать событие MouseMove.
Как обрабатывать перетаскивание из элемента управления Button или любого другого элемента управления внутри кнопки в WPF?
РЕДАКТИРОВАНИЕ – Решение на основе ответа mm8
Обновленный XAML:
Обновленный код обработчика:
Точка startPosition; двойная дельта = 10; частный void Button_PreviewMouseDown (отправитель объекта, MouseButtonEventArgs e) { e.Handled = правда; startPosition = e.GetPosition(this); } Private void Button_PreviewMouseUp (отправитель объекта, MouseButtonEventArgs e) { Точка currentPosition = e.GetPosition(this); if ((currentPosition - startPosition).Длина = delta) выдать новое исключение («DragAndDrop»); }
Я пытаюсь начать перетаскивание элемента управления Button в WPF. Я использую кнопку, потому что мне также нужно обрабатывать событие щелчка.
При добавлении кнопки в XAML и обработке события MouseMove всегда e.LeftMouse равен MouseButtonState.Released.
В следующей реализации обработчика исключение никогда не создается.
private void Button_MouseMove(отправитель объекта, MouseEventArgs e) { если (e.LeftButton == MouseButtonState.Pressed) throw new Exception("Это работает!"); } Я заметил, что то же самое справедливо для любого элемента управления, который я помещаю внутрь кнопки и пытаюсь обработать событие MouseMove.
Как обрабатывать перетаскивание из элемента управления Button или любого другого элемента управления внутри кнопки в WPF?
РЕДАКТИРОВАНИЕ – Решение на основе ответа mm8
Обновленный XAML:
Обновленный код обработчика:
Точка startPosition; двойная дельта = 10; частный void Button_PreviewMouseDown (отправитель объекта, MouseButtonEventArgs e) { e.Handled = правда; startPosition = e.GetPosition(this); } Private void Button_PreviewMouseUp (отправитель объекта, MouseButtonEventArgs e) { Точка currentPosition = e.GetPosition(this); if ((currentPosition - startPosition).Длина = delta) выдать новое исключение («DragAndDrop»); }
Мобильная версия