【问题标题】:Send a message after a message消息后发送消息
【发布时间】:2014-12-01 20:18:07
【问题描述】:

当收到 mvvm-light 消息 DialogMessage 时,我在主视图模型(和视图)中显示一个对话框。在另一个视图模型中,我调用了一个服务,带有这样的确认对话框(作为命令结果):

DialogMessage message = new DialogMessage(() =>
        {
            myService.Call(var); // if dialog message is confirmed

        }, String.Format("Confirm?", value), Visibility.Visible);

Messenger.Default.Send<DialogMessage>(message);

这很好用。现在,我怎样才能在此之后显示另一个 DialogMessage,例如显示带有显示服务 myService.Call(var) 结果的消息的对话框?

或者,在另一种变体中,如何在 RelayCommand 方法执行后调用方法?

【问题讨论】:

    标签: c# wpf mvvm mvvm-light


    【解决方案1】:

    所以对于初学者来说,我已经读过在 MVVM 中使用对话消息是不可以的。它有点打破了 MVVM 的概念。视图模型不应具有取代视图并显示对话框的直接界面。确实,这样做的正确方法是为您要显示的“对话框”创建一个视图模型/视图。

    话虽如此,如果您仍然想遵循您的设计,您需要做的就是在您希望接收消息的任何地方注册消息。因此,根据该消息中封装的内容,您需要:

    Messenger.Default.Register<DialogMessage>(
    this,
    message =>
    {
      // Do something
    });
    

    干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      相关资源
      最近更新 更多