2010-05-21 104 views
7

似乎MVVM模式中的XAML難以彈出Messageboxes。我的客戶堅持驗證標籤和顏色不適合他們。他們仍然需要一個消息框。怎麼辦?如何在MVVM中使用消息框?

我知道我可以在視圖模型中彈出消息框,但這違反了視圖模型的整個目的。我也可以引發錯誤,並在一些異常處理程序中彈出消息框,但消息框並不是例外。它是正常程序流程的一部分。

有沒有一種很好的方法來做到這一點在XAML?我的客戶喜歡messageboxes。她不關心MVVM模式,在使用MVVM和單元測試之前,她從來沒有任何質量問題。但現在,她甚至無法拿到她的信箱,所以她並不高興。

回答

1

您可以在ViewModel中有一個PopUpNotificationRequested事件,該事件將由視圖處理以顯示消息框。通過這種方式,顯示消息框的邏輯保留在視圖模型中,但仍與視圖分離。

+0

非常感謝。但我做了谷歌搜索「PopUpNotificationRequested」,我什麼也得不到。另一件事:如果我使用「PopUpNotificationRequested」,我仍然直接觸摸UI,這是否違反了MVVM模式? – BigTiger 2010-05-21 14:04:57

2

一個possibilty是使用一個接口,用於在MessageBox等

public interface IMessageBoxProvider 
{ 
    MessageBoxResult Show(string messageBoxText, string caption, MessageBoxButton button, MessageBoxImage icon, MessageBoxResult defaultResult); 

} 

和實現該接口,並使用正常的或定製的消息框的包裝類。 在視圖模型,你可以再使用這樣

private IMessageBoxProvider MessageBox { get; set; } 

其中MessageBox的是包裝類。所以現在你已經分離了實際的消息框,所以你可以進行單元測試,而不是。