- MVVM 教程
- MVVM - 首頁
- MVVM – 簡介
- MVVM - 優點
- MVVM - 職責
- MVVM - 第一個應用程式
- MVVM - 連線檢視
- MVVM - 連線ViewModel
- MVVM - WPF 資料繫結
- MVVM - WPF 資料模板
- MVVM - ViewModel 通訊
- MVVM - 層次結構與導航
- MVVM - 驗證
- MVVM - 依賴注入
- MVVM - 事件
- MVVM - 單元測試
- MVVM - 框架
- MVVM - 面試問題
- MVVM 有用資源
- MVVM - 快速指南
- MVVM - 有用資源
- MVVM - 討論
MVVM – 職責
MVVM 模式由三部分組成:模型 (Model)、檢視 (View) 和檢視模型 (ViewModel)。許多開發者剛開始時會對模型、檢視和檢視模型應該包含什麼或不應該包含什麼,以及各個部分的職責是什麼感到有些困惑。
本章我們將學習 MVVM 模式中各個部分的職責,以便您可以清楚地瞭解哪種程式碼應該放在哪裡。MVVM 實際上是客戶端的分層架構,如下圖所示。
表示層由檢視組成。
邏輯層是檢視模型。
表示層是模型物件的組合。
客戶端服務生成和持久化它們,無論是在兩層應用程式中直接訪問,還是透過服務呼叫然後到您的應用程式。
客戶端服務並非 MVVM 模式的正式組成部分,但它經常與 MVVM 一起使用以實現進一步的分離並避免程式碼重複。
模型職責
一般來說,模型是最容易理解的部分。它是支援應用程式中檢視的客戶端資料模型。
它由具有屬性和一些變數的物件組成,用於在記憶體中儲存資料。
其中一些屬性可能引用其他模型物件,並建立物件圖,作為整體構成模型物件。
模型物件應該引發屬性更改通知,在 WPF 中這意味著資料繫結。
最後一個職責是驗證,這是可選的,但是您可以透過使用 WPF 資料繫結驗證功能(透過 INotifyDataErrorInfo/IDataErrorInfo 等介面)將驗證資訊嵌入到模型物件中。
檢視職責
檢視的主要目的和職責是定義使用者在螢幕上看到的結構。結構可以包含靜態部分和動態部分。
靜態部分是定義檢視組成的控制元件和控制元件佈局的 XAML 層次結構。
動態部分就像動畫或狀態更改,這些更改被定義為檢視的一部分。
MVVM 的主要目標是檢視中不應該有程式碼隱藏。
檢視中不可能沒有程式碼隱藏。在檢視中,您至少需要建構函式和初始化元件的呼叫。
我們的想法是,事件處理、操作和資料操作邏輯程式碼不應該在檢視的程式碼隱藏中。
還有一些其他型別的程式碼必須放在程式碼隱藏中,任何需要引用 UI 元素的程式碼本質上都是檢視程式碼。
ViewModel 職責
ViewModel 是 MVVM 應用程式的主要點。ViewModel 的主要職責是向檢視提供資料,以便檢視可以將該資料放在螢幕上。
它還允許使用者與資料互動並更改資料。
ViewModel 的另一個關鍵職責是封裝檢視的互動邏輯,但這並不意味著應用程式的所有邏輯都應該放在 ViewModel 中。
它應該能夠處理適當的呼叫順序,以便根據使用者或檢視上的任何更改做出正確的操作。
ViewModel 還應該管理任何導航邏輯,例如決定何時導航到不同的檢視。