WPF MessageBox with MVVM pattern?

允我心安 提交于 2019-11-27 22:37:09
Tilak

Have an interface IMessageBoxService as:

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

Create a WPFMessageBoxService class:

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

In your ViewModel accept IMessageBoxService as a constructor parameter and inject WPFMessageBoxService using DI/IoC.

In the ViewModel, use IMessageBoxService.ShowMessage to show the MessageBox.

ShowMessageCommand = new DelegateCommand (
    () => messageBoxService.ShowMessage(message, header, MessageType.Information)
);

Customize IMessageBoxService interface to your needs, and pick up a better name.

John Gerdsen

You could bind your messagebox control's visibility to the validation.

You will need a Bool To Visibility converter for this.

See here for using the built in converter: Binding a Button's visibility to a bool value in ViewModel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!