Если WPF ListBox получает событие MouseMove, пока кнопка мыши удерживается нажатой, это изменит выбор списка.То есть, если щелкнуть мышью на элементе № 1, а затем перетащить элемент № 2, он отменит выбор элемента № 1 и выберет элемент № 2. Как я могу предотвратить это?
Это короткая версия.Немного более длинная версия такова: когда пользователь дважды щелкает элемент в моем ListBox, я делаю другие изменения в моем макете, включая отображение других элементов управления над ListBox.Это перемещает ListBox вниз, что означает, что мышь теперь расположена над другим ListBoxItem, чем он был при двойном щелчке пользователя.
Поскольку я делаю эти изменения макета в ответ на событие DoubleClick (которое представляет собой мышь-down), весьма вероятно, что кнопка мыши будет по-прежнему нажата, когда это изменение макета завершится, что означает, что WPF отправит ListBox событие MouseMove (поскольку позиция мыши относительно ListBox изменилась).ListBox обрабатывает это как перетаскивание и выбирает событие, которое теперь находится под мышью.
Я не хочу, чтобы выбор менялся между временем получения события двойного щелчка и временем, когда пользователь отпускает мышь(что может быть хорошо после изменения макета).Я подозреваю, что самый простой способ добиться этого - отключить поведение «изменить выделение при перетаскивании», но я открыт для других предложений.
Как можно «заблокировать» выделение при двойном щелчке, и помешать ему поменяться до mouseup?