Есть ли способ просто переключаться между разными видами, используя одну и ту же модель вида?
Я бы хотел, чтобы пользователь мог переходить к различным представлениям одной и той же модели представления.
На основе примеров, которые я нашел до сих пор, я использую службу навигации для переключения между представлениями, передавая идентификатор в URI, чтобы целевая ВМ знала, какую запись загрузить.
Различные визуализации выполняются через объекты вспомогательного преобразования, привязанные к XAML, поэтому виртуальные машины в основном представляют собой тонкую оболочку вокруг модели и некоторые функции навигации.
Другой подход к навигации должен заключаться в том, чтобы иметь разные визуализации в одном и том же виде и сворачивать неиспользуемые виды до тех пор, пока они не будут использованы, но это сделало бы вид намного более сложным и вывело бы разные визуализации из стека навигации.
Поскольку виртуальная машина практически идентична между представлениями, представляется более целесообразным просто менять представления, а не сохранять / перезагружать объект на основе идентификаторов.
Предполагается, что вам нужна отдельная виртуальная машина для каждого представления или, по крайней мере, отдельный экземпляр виртуальной машины для каждого представления, и каждая виртуальная машина не имеет доступа к контексту предыдущей виртуальной машины, за исключением того, что передается через нее. переходить по параметрам строки запроса.
Подведем итог:
1) Могу ли я поменять представления на виртуальной машине с помощью навигации без потери контекста данных?
или
2) Могу ли я получить доступ к предыдущей виртуальной машине при переходе к событию?
Обновление:
Больше информации
->) Из примера Mix11 Deep Dive Navigation - извлеките виртуальную машину из SimpleIOC, используя ID, переданный в запросе навигации в качестве ключа, и установите для него DataContext. Это похоже на хранение / извлечение объекта данных в хранилище и извлечение его на основе ключа. Это находится в обработчике события OnNavigated в коде целевой страницы.