因此,我在Xamarin Forms应用程序中使用MVVMLight,就此而言,我绝对不是MVVMLight或MVVM方面的专家,但是事情并没有完全解决,所以我希望有人可以清除事情适合我。
按照基本的MVVMLight模板演示,我有一个ViewModelLocator类以及在其中声明的所有ViewModel,例如:
public MainViewModel MainViewModel
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
public DetailsViewModel DetailsViewModel
{
get
{
return ServiceLocator.Current.GetInstance<DetailsViewModel>();
}
}
然后我有一个包含产品列表的列表页面和一个要显示产品详细信息的详细信息页面。
当我选择产品时,该命令会在ListPage视图模型中触发,并且我相信正确的方法是使用Messenger将ViewModel发送到我的DetailsPage并将其作为属性存储在该ViewModel上,然后再导航至该页面。
使用Messenger似乎对我要执行的操作有些过分-为什么我不能只通过ViewModelLocator在ViewModel上设置属性,然后导航到该页面,例如:
App.Locator.DetailsViewModel.Product = selectedProduct;
_navigationService.NavigateTo(AppPages.DetailsPage);
谢谢!