UWP Template10 NavigationService в статическом методе

Я новичок в использовании Template10, и я пытаюсь создать метод для навигации между страницами, но в Template10 NavigationService работает только без статических методов, как лучше всего использовать NavigationService Template10.

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

using Template10.Mvvm;

namespace Project
{
    class NavigationUniversalService : ViewModelBase
    {    
        public static void ToCover()
        {
            NavigationService.Navigate(typeof(Views.Page_Cover));
        }    
    }
}

Любая помощь приветствуется.


person Community    schedule 24.08.2016    source источник


Ответы (1)


но тогда я не мог использовать на других страницах.

Вы можете использовать этот метод на других страницах, создав новый экземпляр вашего NavigationUniversalService.

Например, в моем MainPageViewModel я использовал NavigationService вот так:

public void ToCover()
{
    App.Current.NavigationService.Navigate(typeof(Views.Page_Cover));
}

Затем в модели просмотра другой страницы вы можете вызвать этот метод следующим образом:

MainPageViewModel mainviewmodel = new MainPageViewModel();
mainviewmodel.ToCover();

Проблема в том, что если вы хотите перемещаться по NavigationService, вы можете наследовать свой класс от ViewModelBase, тогда вы можете напрямую использовать NavigationService для навигации, нет необходимости вызывать этот NavigationService из другого класса.

Я имею в виду, например, так:

public class DetailPageViewModel : ViewModelBase
{
    public DetailPageViewModel()
    {
        if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
        {
            Value = "Designtime value";
        }
    }
  ...
    public void CallMethodInOtherViewModel()
    {
        NavigationService.Navigate(typeof(typeof(Views.Page_Cover)); //here!
    }
}
person Grace Feng    schedule 25.08.2016