我正在使用MVVMLight学习MVVM,并且我已经有一些工作正常,我提出的问题是我试图将一个对象传递给另一个工作正常的视图模型,虽然当视图被初始化时,它似乎附加到视图模型的不同实例,所以只有当我更改视图然后重新加载表单时它才能按预期工作。
SendingViewModel
MessengerInstance.Send(Messaging.FormChanged.SMSMessageInput);
MessengerInstance.Send(SMSEmployees, Messaging.MessengerTokens.SMSMessageEmployees);
RecViewModel
public SMSMessageInputViewModel()
{
Messenger.Default.Register<ObservableCollection<HRRM>>(this,Messaging.MessengerTokens.SMSMessageEmployees, value => Employees =value);
MessageChangedCommand = new RelayCommand(MessageChanged);
}
ViewModelLocator
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
//Other Code
SimpleIoc.Default.Register<SMSMessageInputViewModel>();
}
public SMSMessageInputViewModel SMSMessageInput
{
get { return ServiceLocator.Current.GetInstance<SMSMessageInputViewModel>(); }
}
我发现了改变
SimpleIoc.Default.Register<SMSMessageInputViewModel>();
到
SimpleIoc.Default.Register<SMSMessageInputViewModel>(true);
解决了这个问题,但我不想在软件打开时生成此问题,因为他们可能永远不会使用此部分。