![](/img/trans.png)
[英]Bind Pop-Up data into a screen from which Pop-up has triggered in WPF using MVVM
[英]WPF & MVVM - unit testing and pop-up Message Boxes or Dialogs
到目前為止,我正在MVVM中編寫應用程序。 但是我正在ViewModel中進行工作,這引發了一個錯誤,我想向用戶展示以告知他們。
我可以在ViewModel(VM)中執行以下操作:
MessageBox.Show(errorMessage);
或更可能是這樣的:
new ErrorMessageWindow(errorMessage).ShowDialog()
所以我可以樣式。
然后的問題是我正在從VM創建UI彈出窗口。 我正在為該應用程序創建單元測試,該應用程序還會彈出窗口並停止運行,直到手動將其關閉。
尋找一個好的方法。
我當時正在考慮在VM中引發一個事件-但由於View確實不了解VM或其屬性,因此我不知道如何訂閱它。
我沒有使用任何外部框架-我寧願自己實現任何東西。
我通常為viewmodel提供了一種信號,指示它需要引發錯誤。 您可以通過依賴項注入,將其傳遞給構造函數等來實現。實現由包含的應用程序或綁定視圖提供。
測試時,您將傳遞“顯示錯誤消息”功能的測試實現,該功能僅驗證它是否被調用以及是否請求了正確的錯誤消息。 理想情況下,將視圖模型限制為將資源名稱和參數數組傳遞給格式字符串,以便它也可以與國際化一起使用。
您應該反對抽象,以便可以在單元測試期間調換實現。
例如,您可能有一個帶有ShowDialog
方法的IWindowManager
接口,然后有一個調用MessageBox
實現(或在生產過程中需要的任何技術),然后可以使用隔離框架或為返回結果的單元測試創建測試實現。您想要作為測試中的控制變量。
您確實應該考慮使用MVVM框架 ,並且類似Caliburn.Micro之類的東西已經具有IWindowManager
接口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.