似乎MVVM模式中的XAML难以弹出Messageboxes。我的客户坚持认证标签和颜色不适合他们。他们仍然想要一个消息框。怎么办?
我知道我可以在视图模型中弹出消息框,但它违反了视图模型的整个目的。我也可以引发错误,并在一些异常处理程序中弹出一个消息框,但消息框也不例外。这是正常计划流程的一部分。
在XAML中有一个很好的方法吗?我的客户喜欢留言箱。她不关心MVVM模式,在使用MVVM和单元测试之前,她从未遇到任何质量问题。但现在,她甚至无法收到她的留言箱,所以她不是很开心。
答案 0 :(得分:2)
一种可能性是使用消息框的接口,如
public interface IMessageBoxProvider
{
MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult);
}
和一个实现此接口并使用普通或自定义消息框的包装类。 在viewmodel中,您可以像这样使用
private IMessageBoxProvider MessageBox { get; set; }
其中MessageBox是包装类。所以现在你已经解耦了实际的消息框,因此你可以进行单元测试,而不是。
答案 1 :(得分:2)
Josh Smith还有一篇您感兴趣的CodeProject文章here。
答案 2 :(得分:1)
您可以在ViewModel中有一个PopUpNotificationRequested事件,该事件将由View to show消息框处理。这样,显示消息框的逻辑将保留在viewmodel中,但仍然与视图分离。
答案 3 :(得分:1)
WPF Application Framework (WAF) 项目的ViewModel示例应用程序显示了如何在不违反MVVM模式的情况下显示MessageBox。
答案 4 :(得分:0)