0

我有两个视图及其对应的 ViewModel,我想使用 MVVM Light 将文本从一个视图发送到另一个视图,如下所示

在第一个视图模型中,我正在调用以下方法

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;
    }

当我调试我的代码时,这个视图模型的 ctor 被调用但 MessageReceived 没有被调用,因此属性 Test 永远不会被设置,我遗漏了一些东西,请帮忙

4

1 回答 1

0

SecondViewModel在您发送消息之前实际创建的吗?您可以在ViewModelLocator类中指定它。

在定位器中,您必须注册您的视图模型并在应用程序启动时创建它。像这样:

SimpleIoc.Default.Register<SecondViewModel>(true);

使用true参数SecondViewModel将在应用程序启动时创建!:)

于 2013-04-17T13:41:28.847 回答