说我想向用户显示一些验证错误。在MVVM模式中,我可以有一个绑定(bind)到我的 View 模型上某些属性的标签。但是,如果我想在严格遵守MVVM模式的同时显示一个消息框,该怎么办?我的 View 模型将绑定(bind)到什么,它将如何触发创建/显示消息框?

最佳答案

接口(interface)IMessageBoxService为:

interface IMessageBoxService
{
    bool ShowMessage(string text, string caption, MessageType messageType);
}

创建一个WPFMessageBoxService类:
using System.Windows;

class WPFMessageBoxService : IMessageBoxService
{
    bool ShowMessage(string text, string caption, MessageType messageType)
    {
        // TODO: Choose MessageBoxButton and MessageBoxImage based on MessageType received
        MessageBox.Show(text, caption, MessageBoxButton.OK, MessageBoxImage.Information);
    }
}

在您的ViewModel中,接受IMessageBoxService作为构造函数参数,并使用DI/IoC注入(inject)WPFMessageBoxService

在ViewModel中,使用IMessageBoxService.ShowMessage显示MessageBox。
ShowMessageCommand = new DelegateCommand (
    () => messageBoxService.ShowMessage(message, header, MessageType.Information)
);

根据您的需要定制IMessageBoxService接口(interface),并选择一个更好的名称。

关于c# - 具有MVVM模式的WPF MessageBox?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14297312/

10-11 22:42
查看更多