Windows Phone 8.1使用字符串而不是类型进行导航

时间:2015-01-26 19:20:24

标签: windows-phone-8.1 navigateuri

在Windows Phone 8.1中,有什么方法可以使用字符串而不是类型从一个页面导航到另一个页面?

没有反射,Frame.Navigate只接受类型。

谢谢。

2 个答案:

答案 0 :(得分:1)

我同意Kai Brummund的观点。你应该写一个NavigationService。 MVVM光导航服务是导航服务的一个很好的例子。 Here you can find the source code

答案 1 :(得分:0)

或者......您可以使用集成NavigationService(INavigationService)附带的MVVMLight。 您可以在ViewModelLocator中设置它,如下所示:

private const string URL_DETALLE = "/View/DetalleView.xaml";
public ViewModelLocator()
{
    // ...

    var navigationService = this.CreateNavigationService();

    if (!SimpleIoc.Default.IsRegistered<INavigationService>())
    {
        SimpleIoc.Default.Register<INavigationService>(() => navigationService);
    }

    //...
}   

private INavigationService CreateNavigationService()
{
    var navigationService = new NavigationService();
    navigationService.Configure(URL_DETALLE, typeof(DetalleView));

    return navigationService;
}

然后在您的VM构造函数中,您将收到此navigaton服务,您可以这样使用它:

private INavigationService navigationService;
public DetalleViewModel(INavigationService navigationService)
{
    this.navigationService = navigationService;
    this.navigationService.NavigateTo(ViewModelLocator.URL_DETALLE);
}

希望它有所帮助;)