带有MVVM模式的WPF消息框
本文关键字:消息 WPF MVVM 模式 带有 | 更新日期: 2023-09-27 17:53:05
假设我想向用户显示一些验证错误。在MVVM模式中,我可以有一个绑定到视图模型上的某些属性的标签。但是,如果我想在严格遵守MVVM模式的情况下显示消息框,该怎么办呢?我的视图模型将绑定到什么,以及它将如何触发创建/显示消息框?
设置接口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作为一个构造函数参数,并注入WPFMessageBoxService
使用DI/IoC。
在ViewModel中,使用IMessageBoxService.ShowMessage
来显示MessageBox。
ShowMessageCommand = new DelegateCommand (
() => messageBoxService.ShowMessage(message, header, MessageType.Information)
);
根据您的需要定制IMessageBoxService
接口,并选择一个更好的名称
您可以将消息框控件的可见性绑定到验证。
你需要一个Bool To Visibility转换器。
查看这里使用内置转换器:将Button's可见度绑定到ViewModel中的bool值