静态方法中的UWP Template10 NavigationService

时间:2016-08-24 15:44:39

标签: uwp template10

我是使用Template10的新手,我正在尝试创建一个在页面之间导航的方法,但在Template10中,NavigationService只能在没有静态方法的情况下工作,如何使用Template10的NavigationService是最佳方式。

这是我的代码,因为你可以看到它显示错误,如果删除了静态字,它没有给出任何错误但是我无法在其他页面中使用。

using Template10.Mvvm;

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

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

  

然后我无法在其他页面中使用。

您可以通过创建NavigationUniversalService的新实例在其他页面中使用此方法。

例如,在我的MainPageViewModel中,我使用了NavigationService,如下所示:

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

然后在其他页面的viewmodel中,您可以像这样调用此方法:

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!
    }
}