在消息之后发送消息

本文关键字:消息 之后 | 更新日期: 2023-09-27 18:32:53

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

DialogMessage message = new DialogMessage(() =>
        {
            myService.Call(var); // if dialog message is confirmed
        }, String.Format("Confirm?", value), Visibility.Visible);
Messenger.Default.Send<DialogMessage>(message);

这工作正常。现在,在此之后如何显示另一个对话框消息,例如显示带有显示服务 myService.Call(var) 结果的消息的对话框?

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

在消息之后发送消息

因此,对于初学者来说,我已经读到使用对话框消息在 MVVM 中是禁忌。它有点打破了MVVM的概念。视图模型不应具有取代视图并显示对话框的直接接口。实际上,执行此操作的正确方法是为要显示的"对话框"创建视图模型/视图。

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

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

干杯!