У меня есть простое приложение, состоящее из:
Модель
- Предметы
- Критерии фильтрации, примененные к этому списку элементов
Просмотры
- Страница приветствия
- ГлавнаяЭлементыСтраница
- ФильтрРедактироватьСтраницу
Я использую MVVM Light и Windows Phone 7.
В настоящее время у меня есть 3 ViewModels, по одному для каждого представления. В прошлом у меня была одна ViewModel, которая делала общение, о котором я собираюсь спросить, очень простым. Однако я хотел использовать 3 отдельные виртуальные машины, поскольку это кажется правильным путем.
Страница приветствия может установить один из критериев фильтра перед переходом на страницу MainItemsPage. MainItemsPage привязан к свойству Items, которое предоставляется его ViewModel. Эта ViewModel должна отфильтровать этот список в зависимости от текущих критериев фильтрации. Страница FilterEditPage позволяет пользователю редактировать полный набор критериев из 4 переменных. Когда критерии изменены, необходимо повторно отфильтровать коллекцию Items, используемую в ViewModel для MainItemsPage.
Вопрос в том, как я пропускаю изменения фильтра через приложение. Я знаю, что в MVVM есть концепция обмена сообщениями, а инструментарий MVVM Light предоставляет класс Messenger. Однако то, с чем я борюсь, заключается в том, где лежит ответственность за отправку этих сообщений?
- Переходят ли 3 виртуальные машины к модели всякий раз, когда им нужно работать с текущим набором фильтров?
- Проходят ли все обновления фильтра через модель FilterEditViewModel, которая, в свою очередь, передает сообщение об изменении фильтра?
- Можно ли вернуться к одной виртуальной машине для всех представлений?
Я не вижу, чтобы 1. работало, потому что что-то должно будет вызвать виртуальные машины, чтобы вернуться к модели, которую я знаю, что могу заставить 3. работать прямо сейчас без проблем. Это неправильно?
ТИА
Пэт Лонг