2013-11-24 3 views
3

В основном, мой сценарий таков: у меня есть 1 вид, связанный с ViewModel, со списком элементов (класс элементов - это класс в моей модели). Каждый раз, когда элемент выбирается из списка в этом «представлении списка», его поля редактируются в другом «Детальный просмотр». Это идентично сценарию примера управления клиентами, когда клиент выбирается из списка (в «представлении списка»), а данные Клиента могут быть изменены в «Детализированном представлении». Добавленный quirk в моем сценарии - это то, что я хочу, чтобы изменения были внесены в элемент в представлении деталей, чтобы они отражались обратно в представлении списка. Изменения сохраняются в БД из представления сведений.MVVMCross - привязать те же ViewModel к 2 различным представлениям

Кроме того, в зависимости от изменений, внесенных в представление сведений, элемент можно удалить из списка в первом представлении. Обратите внимание, что это не удаление записи из БД, потому что список в представлении списка представляет собой только отфильтрованный список элементов в БД. Я понял, два возможных пути, что я могу сделать это:

  1. Связываясь с 2 Просмотров одной и той же модели View

EDIT: Как назвать вторую точку зрения? Будет ли второй вид фактически использовать один и тот же экземпляр совместно используемого ViewModel?

-или- 2. Пропустив выбранный элемент в окне списка по ссылке для просмотра подробной информации. Поэтому в этом случае я поддерживаю отображение 1-View-to-1-ViewModel.

Мои вопросы:

  • как можно реализовать сценарий 1,
  • в 2, делает Init() метод (используется в сочетании с методом ShowViewModel() в) поддержку передачи параметров по ссылки?

Я был бы признателен, если вы могли бы добавить фрагменты кода/примеры в свои ответы.

Большое спасибо заранее,

+0

@Stuart: Привет Стюарт, извините вернуться через неделю на этом; просто отредактируйте свое оригинальное сообщение и добавили дополнительный вопрос/пояснение по теме «привязка 2 взглядов к той же модели», которую я забыл поместить первоначально: как мне вызвать второе представление ?. Thanx – Pap

ответ

2

связывания 2 Просмотров на одной и той же модели View

Вы можете установить свойство ViewModel на любой View вручную, если вы хотите. Просто установите ViewModel = foo; перед вызовом base.OnCreate(), base.OnNavigatedTo() или base.ViewDidLoad()

в 2, делает метод Init() (используется в сочетании с методом ShowViewModel()) поддержки передачи параметров по ссылке?

MvvmCross не поддерживает передачу объектов между ViewModels. В Windows Phone навигаторы выполняются параметрами url. На Android навигаторы выполняются с помощью Intent s - эти базовые механизмы просто не позволяют передавать фактические ссылки на объекты.


В общем, я справиться с этой ситуацией, используя обмен сообщениями из хранилища данных в ViewModel

Я был бы признателен, если бы вы могли включать фрагменты кода/примеры в своих ответах.

Вы можете увидеть, как я обычно это сделать в N = 12 N = 15 в http://mvvmcross.wordpress.com/

+0

Thanx Stuart. Я попробую/проведу все предложения. – Pap

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