我在使用 MVVMLight 框架中的 Messenger 类在我的 ViewModel 之间传递参数时遇到问题。
这是我正在使用的代码:
视图模型定位器
public ViewModelLocator ()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default.Register<INavigationService, NavigationService>();
SimpleIoc.Default.Register(() => new MainViewModel(NavigationService));
SimpleIoc.Default.Register(() => new SecondViewModel(NavigationService));
}
public MainViewModel MainViewModel
{
get { return SimpleIoc.Default.GetInstance<MainViewModel>(); }
}
public SecondViewModel SecondViewModel
{
get { return SimpleIoc.Default.GetInstance<SecondViewModel>(); }
}
public INavigationService NavigationService
{
get { return SimpleIoc.Default.GetInstance<INavigationService>(); }
}
主视图模型
private void ShowPersonDetailsCommand(object obj)
{
Messenger.Default.Send((Person)obj);
_navigationService.NavigateTo(new Uri("/SecondPage.xaml", UriKind.Relative))
}
第二视图模型
public SecondViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
Messenger.Default.Register<Person>(
this,
person =>
{
Person = person;
});
}
在我的MainViewModel
(ShowPersonDetailsCommand) 中,我正在导航到 SecondPage 并在 Messenger 类中发送一个人作为参数。在这一点上,这个人被很好地构建并作为消息发送。
但是在SecondViewModel
构造函数中,这个人是空的:(
有什么我想念的吗?
我觉得我做错了什么...
供您参考 :
Windows Phone 8.1 (Silverlight)
MVVMLight 5.0.2
视觉工作室 2013 更新 4