当收到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方法后调用方法?
答案 0 :(得分:0)
首先,对于初学者,我已经读到使用对话框消息在MVVM中是不可能的。它打破了MVVM的概念。视图模型不应具有取代视图的直接界面并显示对话框。实际上,执行此操作的正确方法是为要显示的“对话框”创建视图模型/视图。
话虽这么说,如果你仍然想要遵循你的设计,你需要做的就是在你希望收到消息的任何地方注册消息。因此,根据该消息中封装的内容,您需要:
Messenger.Default.Register<DialogMessage>(
this,
message =>
{
// Do something
});
干杯!