我在使用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