【发布时间】:2015-02-05 11:04:36
【问题描述】:
我在使用 MVVMLight 框架中的 Messenger 类在我的 ViewModel 之间传递参数时遇到问题。
这是我正在使用的代码:
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) 中,我正在导航到 SecondPage 并在 Messenger 类中发送一个人作为参数。在这一点上,此人已构建良好并作为消息发送。
但在SecondViewModel 构造函数中,人为空:(
我有什么遗漏吗?
我认为我做错了什么......
供您参考:
Windows Phone 8.1(Silverlight)
MVVMLight 5.0.2
Visual Studio 2013 更新 4
【问题讨论】:
标签: c# silverlight windows-phone-8.1 mvvm-light viewmodellocator