Правильно ли вызывать Навигацию на другую страницу из ViewModel? - PullRequest
0 голосов
/ 04 марта 2011

Я знаю, что есть много способов перейти на другую страницу из ViewModel.

Я не уверен, является ли это хорошей идеей или нет, поскольку цель MVVM состоит в том, чтобы отделить View от ViewModel, но переход на другую страницу в ViewModel означает, что существует пара между View и ViewModel, что, как говорится, если я изменю View имя, мне нужно изменить URI (строку) в ViewModel тоже.

Я хочу знать, правильно ли вызывать Навигацию на другую страницу из ViewModel? Если это неправильно, как правильно (или лучше) перейти на другую страницу?

Ответы [ 2 ]

0 голосов
/ 04 марта 2011

Это и правильно, и естественно.

Когда вы делаете запрос навигации, «имя», которое вы указываете как часть Uri, - это имя, под которым ваш класс View был зарегистрирован в контейнере. Поскольку регистрация классов в контейнере выполняется самим модулем, а не View или ViewModel, вы не вводите связь между View и ViewModel.

Тем не менее, если вы хотите настроить способ, которым Prism интерпретирует ваши запросы навигации, вы всегда можете написать класс, реализующий IRegionNavigationContentLoader. Если вы зарегистрируете это в контейнере, Prism разрешит ваш собственный класс вместо встроенного RegionNavigationContentLoader. Но это не самая простая вещь в мире.

0 голосов
/ 04 марта 2011

Почему бы вам не создать отдельный класс, который сохранит логику для навигации? В этом случае вам нужно всего лишь отправить сообщение от ViewModel, что программа должна изменить представление, и детали будут решаться произвольно. При таком подходе у вас все еще нет прямой связи между View и VM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...