我有一個非常簡單的應用程式,它應該讀取用戶選擇的檔案并將其顯示在螢屏上。為此,我創建了兩個視圖,一個帶有一個按鈕供用戶選擇檔案,另一個視圖用于顯示檔案的內容。
我也有兩個 ViewModel,每個視圖一個,現在,當用戶單擊按鈕選擇一個檔案時,ViewModel 中的代碼將使用 OpenFileDialog 并打開檔案,我的問題是我應該從 viewModel 還是從MVVM 專案的模型?
uj5u.com熱心網友回復:
由于對話框與作業系統的緊密耦合,對話框不太適合 MVVM 范例。但作為一般規則,您想要直接進行單元測驗的任何內容都屬于視圖模型,而在運行時創建 Windows GUI 物件的任何內容都屬于您的視圖層。考慮到這一點,視圖是呼叫 OpenFileDialog 的適當層。您可能會發現您仍然需要打破干凈的 MVVM 架構來執行此操作,因此將其抽象為可以注入的服務至少可以使其遠離您的其余代碼并保持良好的關注點分離。
如果你真的想正確地做到這一點,那么你必須實作一些類似于 WPF 團隊為“常規”視窗撰寫的樣板代碼。我在這里寫了一篇關于它的長文章,以及一個用于輕松將對話框功能添加到您自己的 MVVM 專案的庫:
https://www.codeproject.com/Articles/820324/Implementing-Dialog-Boxes-in-MVVM
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/457626.html
