MVVM – 職責



MVVM 模式由三部分組成:模型 (Model)、檢視 (View) 和檢視模型 (ViewModel)。許多開發者剛開始時會對模型、檢視和檢視模型應該包含什麼或不應該包含什麼,以及各個部分的職責是什麼感到有些困惑。

本章我們將學習 MVVM 模式中各個部分的職責,以便您可以清楚地瞭解哪種程式碼應該放在哪裡。MVVM 實際上是客戶端的分層架構,如下圖所示。

MVVM Responsibilities
  • 表示層由檢視組成。

  • 邏輯層是檢視模型。

  • 表示層是模型物件的組合。

  • 客戶端服務生成和持久化它們,無論是在兩層應用程式中直接訪問,還是透過服務呼叫然後到您的應用程式。

  • 客戶端服務並非 MVVM 模式的正式組成部分,但它經常與 MVVM 一起使用以實現進一步的分離並避免程式碼重複。

模型職責

一般來說,模型是最容易理解的部分。它是支援應用程式中檢視的客戶端資料模型。

  • 它由具有屬性和一些變數的物件組成,用於在記憶體中儲存資料。

  • 其中一些屬性可能引用其他模型物件,並建立物件圖,作為整體構成模型物件。

  • 模型物件應該引發屬性更改通知,在 WPF 中這意味著資料繫結。

  • 最後一個職責是驗證,這是可選的,但是您可以透過使用 WPF 資料繫結驗證功能(透過 INotifyDataErrorInfo/IDataErrorInfo 等介面)將驗證資訊嵌入到模型物件中。

檢視職責

檢視的主要目的和職責是定義使用者在螢幕上看到的結構。結構可以包含靜態部分和動態部分。

  • 靜態部分是定義檢視組成的控制元件和控制元件佈局的 XAML 層次結構。

  • 動態部分就像動畫或狀態更改,這些更改被定義為檢視的一部分。

  • MVVM 的主要目標是檢視中不應該有程式碼隱藏。

  • 檢視中不可能沒有程式碼隱藏。在檢視中,您至少需要建構函式和初始化元件的呼叫。

  • 我們的想法是,事件處理、操作和資料操作邏輯程式碼不應該在檢視的程式碼隱藏中。

  • 還有一些其他型別的程式碼必須放在程式碼隱藏中,任何需要引用 UI 元素的程式碼本質上都是檢視程式碼。

ViewModel 職責

  • ViewModel 是 MVVM 應用程式的主要點。ViewModel 的主要職責是向檢視提供資料,以便檢視可以將該資料放在螢幕上。

  • 它還允許使用者與資料互動並更改資料。

  • ViewModel 的另一個關鍵職責是封裝檢視的互動邏輯,但這並不意味著應用程式的所有邏輯都應該放在 ViewModel 中。

  • 它應該能夠處理適當的呼叫順序,以便根據使用者或檢視上的任何更改做出正確的操作。

  • ViewModel 還應該管理任何導航邏輯,例如決定何時導航到不同的檢視。

廣告
© . All rights reserved.