Самый простой способ сделать это - добавить обработчик событий двойного щелчка в список. Помните: MVVM не означает отсутствие кода в представлении! Это означает, что представление только обрабатывает проблемы представления. Вы можете привести действительно хороший аргумент, что EventArgs имеют значение только для представления, и если вы хотите передать его в ViewModel, вам следует только передать соответствующую информацию.
Если вам нужно что-то вроде извлечения данных из EventArgs для передачи их в ViewModel, это приемлемо и правильно ... и лучше, чем передавать EventArgs вниз во ViewModel, IMHO.
(я уверен, что у меня возникнут некоторые разногласия по этому вопросу, но работа с взаимодействием с пользовательским интерфейсом является проблемой View, и если альтернативой является написание поведения или использование инфраструктуры для получения единого элемента управления, работающего на одной странице, помните: ягни и паттерны не религия.)
Несколько платформ MVVM позволяют вам сделать это (хотя есть много дискуссий о том, хорошая это идея или нет). В частности, MVVM Light Toolkit недавно добавил это для поддержки перетаскивания (если я правильно помню сообщение в блоге).
Если вы не используете инфраструктуру MVVM, я решил написать поведение, позволяющее мне делать это, если я собирался делать одно и то же в нескольких местах. В этом случае я обычно извлекаю информацию, которая мне нужна, из EventArgs (то есть вы, вероятно, не хотите, чтобы полные аргументы события были действительно нужны, но вы, вероятно, заботитесь о том, какой элемент был нажат и, возможно, несколько других бит данных).