我是使用Template10的新手,我正在尝试创建一个在页面之间导航的方法,但在Template10中,NavigationService只能在没有静态方法的情况下工作,如何使用Template10的NavigationService是最佳方式。
这是我的代码,因为你可以看到它显示错误,如果删除了静态字,它没有给出任何错误但是我无法在其他页面中使用。
using Template10.Mvvm;
namespace Project
{
class NavigationUniversalService : ViewModelBase
{
public static void ToCover()
{
NavigationService.Navigate(typeof(Views.Page_Cover));
}
}
}
感谢任何帮助。
答案 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!
}
}