我在尝试使用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 });
这让我难过!