我在使用MVVMLight框架中的Messenger类在我的ViewModels之间传递参数时遇到问题。使用MVVMLight在ViewModels之间传递参数
这是我使用的代码:
ViewModelLocator
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>(); }
}
MainViewModel
private void ShowPersonDetailsCommand(object obj)
{
Messenger.Default.Send((Person)obj);
_navigationService.NavigateTo(new Uri("/SecondPage.xaml", UriKind.Relative))
}
SecondViewModel
public SecondViewModel(INavigationService navigationService)
{
_navigationService = navigationService;
Messenger.Default.Register<Person>(
this,
person =>
{
Person = person;
});
}
在我的MainViewModel
(ShowPersonDetailsCommand)中,我正在导航到第二页并在Messenger类中发送一个人作为参数。此时,该人构建良好并作为消息发送。
但在SecondViewModel
构造函数,这个人是无效:(
有什么我失踪
我认为我做错了什么......
为了您的信息?
的Windows Phone 8.1(Silverlight的)
MVVMLight 5.0.2
的Visual Studio 2013更新4
这一个为我工作,谢谢:) – 2014-12-09 16:56:35