Как отправить параметры между viewmodels используя viewmodellocator
Я создаю приложение WPF с использованием MVVMLight. Я использую ViewModelLocator для создания моделей представления. Моя проблема заключается в передаче параметров между ними.
Например, у нас есть ситуация:
У нас есть сетка с некоторыми объектами, при двойном щелчке на одной из которых мне нужно создать новый вид с подробной информацией об этом объекте. Как отправить идентификатор выбранного элемента в ViewModel нового View?
2 ответа
Обычно вы используете какую-то систему обмена сообщениями, такую как EventAggregator от Prism или Messenger MVVM Light.
Обе системы напоминают мне систему подкачки: любая часть приложения может транслировать сообщения, а любая часть приложения - подписываться на прослушивание сообщений.
Таким образом, ваша команда DoubleClick будет транслировать LoadItemMessage
содержащий выбранный элемент Id
и что бы ни отвечал за показ предмета подписался бы на получение LoadItemMessages
и будет загружать элемент всякий раз, когда он слышит LoadItemMessage
,
Если вам интересно, у меня есть небольшая статья в моем блоге о связи между Viewmodels с MVVM, которая дает общий обзор систем событий.
Это проблема с ViewModelLocator (для передачи параметров в ViewModel из View xaml). Что вы можете сделать, это создать параметр свойства объекта Type или (типа вашего SelectedItem) в классе ViewModelLocator. Свяжите это с SelectedItem вашей Grid и затем передайте его новой ViewModel. Я надеюсь, это поможет. ПРИМЕЧАНИЕ: если вы создаете свойство типа object, не забудьте его привести.