我有两个视图及其对应的ViewModel,我想使用MVVM Light将文本从一个视图发送到另一个视图,如下所示
在第一个viewmodel中我调用了以下方法
public void NavigatePage()
{
string temp = "temp value";
Messenger.Default.Send("temp");
Frame frame = Window.Current.Content as Frame;
if (frame != null) frame.Navigate(typeof(MyPage), temp);
}
在第2页视图模型中我有以下代码
public MyViewModel()
{
Messenger.Default.Register<string>(this, MessageReceived);
}
private string test;
public string Test
{
get { return test; }
set { test = value; RaisePropertyChanged("Test");}
}
private void MessageReceived(string message)
{
Test = message;
}
当我调试我的代码时,这个viewmodel的ctor被调用但是MessageReceived没有被调用因此属性Test永远不会被设置,我错过了什么,请帮助
答案 0 :(得分:0)
发送邮件之前是否真正创建了SecondViewModel
?您可以在ViewModelLocator
类中指定它。
在定位器中,您必须注册视图模型并在应用程序启动时创建它。 像这样:
SimpleIoc.Default.Register<SecondViewModel>(true);
使用true
参数,应用程序启动时将创建SecondViewModel
! :)