Переход на новую страницу из модели представления - PullRequest
0 голосов
/ 18 августа 2011

Я использовал шаблон приложения WP7 DataBound для моей программы, который использует форму MVVM. Я хотел бы перейти с моей главной страницы на страницу настроек, но поскольку именно виртуальная машина загружает данные, которая, в свою очередь, определяет необходимость загрузки страниц настроек, я хотел бы вызвать код навигации из виртуальной машины, а не представление , Однако NavigationService не показывает метод Navigate в виртуальной машине, только в представлении. У кого-нибудь есть какие-либо предложения о том, как я могу / должен вызывать метод Navigate на виртуальной машине?

Спасибо

Джейсон.

Ответы [ 2 ]

1 голос
/ 18 августа 2011

Реализуйте это как статический метод в вашем App.xaml.cs, как это

public static void Navigate(Uri source)
{
    Dispatcher.BeginInvoke(() => (App.Current.RootVisual as PhoneApplicationFrame).Navigate(source));
}

Таким образом, вы можете просто позвонить App.Navigate(uri) из любого места.

Вы также можете реализовать GoBack():

public static void GoBack()
{
    Dispatcher.BeginInvoke(() => (App.Current.RootVisual as PhoneApplicationFrame).GoBack());
}
1 голос
/ 18 августа 2011

Я склонен использовать один из следующих

  • опубликовать событие в ВМ, подписаться в представлении
  • реализуйте глобальный NavigationService (используя шаблон ServiceLocator или DI), вы можете, например, реализовать такой интерфейс в своем классе приложения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...