Столкновение событий щелчка и перетаскивания WPF? - PullRequest
4 голосов
/ 23 июня 2011

У меня есть WPF ListBox, где элементы стилизованы под кнопки.Я использовал gong-wpf-dragdrop , чтобы очень легко реализовать перетаскивание, поэтому я могу изменить порядок элементов списка.Однако теперь я хотел бы иметь возможность щелкнуть левой кнопкой мыши по одной из кнопок, чтобы запустить действие редактирования, но событие MouseLeftButtonUp в ListBox, похоже, поглощается операцией перетаскивания.(Я использую EventToCommand из MVVM Light, чтобы подключить все).

Изменение ListBox для ответа на MouseRightButtonUp работает нормально (поэтому я могу перетаскивать и отпускать левой кнопкой мыши и запускать действие редактированияс правой кнопкой мыши), но я бы предпочел оставить правую кнопку мыши для контекстного меню.

Я также пытался использовать MouseDoubleClick, но, хотя это и запускало действие редактирования, оно всегда открывало первый элемент в спискедля редактирования и переместил элемент списка, по которому дважды щелкнули мышью, верхнюю часть списка - очень запутанно для всех заинтересованных сторон!

Есть мысли о том, как к этому подойти?

1 Ответ

1 голос
/ 05 июля 2011

Если я вас правильно понимаю, вы не хотите перетаскивать, если нажимаете кнопку. Один из способов сделать это - подключиться к PreviewMouseLeftButtonDown кнопки. Инициируйте редактирование действия в обработчике событий и установите e.Handled = true. Таким образом, MouseLeftButtonDown не будет доставлен в список, и операция перетаскивания не будет инициирована. Одним из недостатков является то, что кнопка будет реагировать на mousedown вместо mouseup (так что это похоже на ClickMode = Press).

С уважением, Rob

...