MVVMLight的导航问题

时间:2016-03-20 02:40:32

标签: xamarin.ios xamarin.android mvvm-light

我在尝试使用MVVMLight进行导航时遇到了一些问题。

在iOS上,我使用以下代码在AppDelegate / FinishedLoading中创建了我的NavigationService

        var nav = new NavigationService();

        nav.Configure(ViewModelLocator.MainPageKey, "MainPage");
        nav.Configure(ViewModelLocator.MapPageKey, "MapPage");

        // iOS uses the UINavigtionController to move between pages, so will we
        nav.Initialize(Window.RootViewController as UINavigationController);

        // finally register the service with SimpleIoc
        SimpleIoc.Default.Register<INavigationService>(() => nav);

当我使用NavigateTo在两个页面之间移动时,我不断得到同样的错误,询问我是否调用了NavigationService.Initialize。显然我有。第一个ViewController显示没有问题。

在Android上,我在第二个Activity中再次遇到问题,但出现了不同的错误。

我正在传递一个List&lt;双&GT;作为NavigateTo中的对象参数,然后在Activity中,使用以下内容检索传递的对象

    void GetDataFromViewModel()
    {
        var NavService = (NavigationService)SimpleIoc.Default.GetInstance<INavigationService>();
        var data = NavService.GetAndRemoveParameter<object>(Intent) as List<double>;
        if (data != null)
        {
            ViewModel.Latitude = data[0];
            ViewModel.Longitude = data[1];
        }
    }

问题是在我的OnCreate方法中的base.OnCreate之后,应用程序崩溃并出现错误

UNHANDLED EXCEPTION:
[MonoDroid] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Microsoft.Practices.ServiceLocation.ActivationException: Type not found in cache: System.Object.

我的NavigateTo行看起来像这样

INavigationService navigationService;
...code
navigationService.NavigateTo(ViewModelLocator.MapPageKey, new List<double> { Latitude, Longitude });

这让我难过!

0 个答案:

没有答案