0

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

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

谢谢你。

4

2 回答 2

1

我同意凯布鲁蒙德的观点。您应该编写一个 NavigationService。导航服务的一个很好的例子是 MVVM 灯光导航服务。 在这里你可以找到源代码

于 2015-01-27T11:29:14.520 回答
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 构造函数中,您将收到此导航服务,您可以这样使用它:

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

希望能帮助到你 ;)

于 2015-02-27T09:21:50.757 回答