2010-09-17 3 views
1

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

В Win32 я сделал бы это, включив стиль LVS_EX_ONECLICKACTIVATE.

В WPF я попытался сделать это, обработав событие MouseLeftButtonUp. К сожалению, и это странно, иногда он подбирает неправильный предмет.

Например, если вы дважды щелкните строку заголовка (заголовок), чтобы увеличить окно, вторая клавиша мыши появится над списком, и событие будет поднято. Точно так же, если элемент частично отображается, щелчок по нему прокручивает его в поле зрения, но мышь поднимается против элемента сейчас на вид, а не на один щелчок.

Теперь, опять же, если это был Win32 (до LVS_EX_ONECLICKACTIVATE), я бы взял захват мыши по мыши, запомнил элемент и проверил, что у меня был захват с помощью мыши.

Но это не Win32, это WPF. Как сделать активацию с одним щелчком мыши в списке WPF?

ответ

0

Должен признаться, я до сих пор не наткнулся на LVS_EX_ONECLICKACTIVATE, но, как я понял, обработка «SelectionChanged» должна делать трюк.

Или существует разница между двойным щелчком по выбору или активации по выбору?

+0

Возможно, это сработает, но мне также было интересно, есть ли способ получить доступность клавиатуры, которую активирует один щелчок мыши в Win32. –

+0

Ах, нормально, событие «SelectionChanged», вероятно, также срабатывает, когда клавиши со стрелками используются для навигации, что, конечно, неприемлемо. –

Смежные вопросы