Я пытаюсь реализовать щелчок и перетаскивать выделение, как в проводнике Windows (синий прямоугольник выбора, который появляется, когда вы держите кнопку мыши и перемещаете мышь).MouseEnter/MouseLeave и мышь левая кнопка вниз
Итак, у меня есть ListView со стилизованным шаблоном ListViewItem. Я добавил событие MouseEnter и MouseLeave в свой ListViewItem (с помощью EventSetter), Он отлично работает, если не нажать левую кнопку мыши. В этом случае события не срабатывают, что плохо для того, чего я пытаюсь достичь.
Знаете ли вы, что для этого есть хороший способ обхода, я хочу знать, когда я закончил элемент или нет, когда левая кнопка мыши опущена.
На данный момент я пробовал с VisualTreeHelper.HitTest(), но я знаю только, когда пересекаю ListViewItem, и мне нужно знать, когда я его оставлю.
Спасибо.
Проблема с этим методом заключается в том, что мои элементы выбираются только тогда, когда пользователь отпускает кнопку мыши, в моем случае я хочу быть ближе к поведению проводника Windows, что означает выбор/отмена выбора элементов, когда мышь/«синий прямоугольник выбора» "находится над предметом. Если я сделаю выбор после того, как он выполнит задания, но внешний вид и опыт UX не будут такими же хорошими, как ожидалось, и я хочу как можно больше поддерживать согласованность с поведением Windows по умолчанию. – StrAbZ
Затем вы можете обрабатывать 'MouseMove' в' ListView', проверить, не нажата ли соответствующая кнопка мыши, а также проверить, возвращает ли 'Mouse.DirectlyOver'' ListViewItem'. Если это возможно, вы можете выбрать его и/или снять выделение с элемента, над которым была указана последняя. Сложно, но это всего лишь небольшое логическое взаимодействие. –
У меня может быть указатель мыши IsDirectlyOver, проверенный по каждому элементу, но это потребует удаления MouseCapture, чего я не хочу. Если я чего-то не упущу. – StrAbZ