У меня есть приложение WPF с ListBox
. Для этого списка я хотел бы имитировать поведение панели управления пользователями (начиная с Windows Vista), а именно: вы нажимаете один раз на элемент списка, и это аналогично двойному щелчку.
В Win32 я бы сделал это, включив стиль LVS_EX_ONECLICKACTIVATE.
В WPF я пытался сделать это, обрабатывая событие MouseLeftButtonUp
. К сожалению, и это странно, иногда он забирает не тот предмет.
Например, если вы дважды щелкнете строку заголовка (заголовок), чтобы развернуть окно, произойдет второе наведение мыши на поле списка, и событие будет вызвано. Точно так же, если элемент частично виден, щелчок по нему прокручивает его, но при наведении курсора мыши поднимается элемент, который сейчас , а не тот, по которому щелкнули.
Теперь, опять же, если бы это был Win32 (до LVS_EX_ONECLICKACTIVATE), я бы получил захват мыши при наведении мыши, запомнил элемент и проверил, что захватил при наведении мыши вверх.
Но это не Win32, это WPF. Как выполнить активацию одним щелчком в списке WPF?