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