Как передать информацию EventArgument из представления в модель представления в WPF?

StackOverflow https://stackoverflow.com/questions/2486025

Вопрос

У меня есть элемент управления ListView в моем приложении, который привязан к коллекции Пользовательский объект Список<Пользовательский объект>.Тот самый Пользовательский объект имеет отдельный вид.Этот ListView имеет отдельную модель представления.

Список коллекций _customobject содержится в классе ViewModel ListView.

Мой Запрос:

Я хочу вызвать представление, которое показывает свойства пользовательского объекта, когда пользователь дважды щелкает по любой строке ListView.Команда двойного щелчка ListView привязана к ListViewDoublClick (Список просмотров) Команда в модели представления.Пользовательский объект находится в аргументе события команды двойного щелчка listview.Чтобы достичь этого, я должен передать пользовательский объект (или уникальное свойство id пользовательского объекта, с помощью которого я могу извлечь пользовательский объект из коллекции) в качестве командного параметра.

Пожалуйста, предложите мне решение!!

Это было полезно?

Решение

Самый простой способ сделать это - добавить в список обработчик событий двойного щелчка.Вспомни:MVVM не означает отсутствие кода в представлении!Это означает, что представление обрабатывает только проблемы представления.Вы можете привести действительно веский аргумент в пользу того, что EventArgs имеют смысл только для представления, и если вы хотите передать его ViewModel, вы должны передать только соответствующую информацию.Если вам нужно сделать что-то вроде извлечения данных из EventArgs, чтобы передать их в ViewModel, это приемлемо и правильно...и это лучше, чем передавать EventArgs в ViewModel, ИМХО.

(Я уверен, что у меня возникнут некоторые разногласия по этому вопросу, но работа с взаимодействием пользовательского интерфейса - это проблема просмотра, и если альтернативой является написание поведения или использование фреймворка для получения единого элемента управления, работающего на одной странице, помните:ЯГНИ и Паттерны - это не Религия.)

Некоторые фреймворки MVVM позволяют вам сделать это (хотя ведется много дискуссий о том, хорошая это идея или нет).В частности, Инструментарий MVVM Light Toolkit добавлено это некоторое время назад для поддержки перетаскивания (если я правильно помню сообщение в блоге).

Если вы не используете фреймворк MVVM, я закончил писать поведение, позволяющее мне делать это, если я собирался делать одно и то же в нескольких местах.В этом случае я обычно извлекаю интересующую меня информацию из EventArgs (т.е.вероятно, вам на самом деле не нужны полные аргументы события, но вам, вероятно, не все равно, на какой элемент был нажат, и, возможно, на несколько других битов данных).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top