91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解.NET MVVM設計模式

發布時間:2021-10-29 15:49:42 來源:億速云 閱讀:118 作者:柒染 欄目:編程語言

如何理解.NET MVVM設計模式,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

MVVM 模式能夠幫你把你程序的業務與展現邏輯從用戶界面干凈地分離開。保持程序邏輯與界面分離能夠幫助解決很多開發以及設計問題,能夠使你的程序能更容易的測試,維護與升級。它也能很大程度的增加代碼重用性,并讓開發者與界面設計者更容易地相互合作。

使用 MVVM 模式,程序的 UI 和其背后的展現與業務邏輯將被分離至三個類中:

1-視圖,封裝 UI 與 UI 邏輯

2-模型視圖,封裝展示邏輯與狀態

3-模型,封裝程序的業務邏輯以及數據

MVVM 模式是展示-模型模式的變種,它優化了一些 WPF 的核心特性,例如數據綁定,數據模版,命令以及行為。在 MVVM 模式中,視圖通過數據綁定以及命令行與視圖模型交互,并改變事件通知。視圖模型查詢觀察并協調模型更新,轉換,校驗以及聚合數據,從而在視圖顯示。

下圖展示了 MVVM 類以及它們之間的交互:

如何理解.NET MVVM設計模式

視圖類

視圖的責任便是定義用戶在屏幕上能看到的一切的結構以及外觀。理想的視圖背后的代碼只包含調用 InitializeComponent 方法的構造函數。視圖通常扮演以下關鍵角色:

  • 視圖是可視化元素,例如窗口,頁面,用戶控件或者數據模版

  • 視圖定義了包含在視圖里的控件以及可視化層以及樣式

  • 視圖通過 DataContext 屬性應用視圖模型

  • 綁定了控件以及數據的屬性以及命令被視圖模型暴露出來

  • 視圖可以定制化視圖與視圖模型間數據綁定行為

  • 視圖定義以及處理 UI 可視化行為例如動畫

  • 視圖背后的代碼實現了用 XAML 很難表達的可視化行為

視圖模型類

視圖模型在 MVVM 模式中為視圖封裝了展示邏輯,它并不是直接引用視圖或者任何其他關于視圖特定的實現或者類型。視圖模型實現了屬性以及命令使得視圖進行數據綁定,并通過改變事件通知來提醒視圖狀態已經改變了。視圖模型提供的屬性和命令定義了提供給 UI 的功能。但是視圖定義了如何渲染的功能。

視圖模型負責協調視圖與任何需要的模型類的交互。很典型的,視圖模型與視圖類有著一堆多的關系。視圖模型可以選擇直接將模型類暴露給視圖,因此視圖的控件能夠直擊進行數據綁定。視圖模型可以轉換或者操縱模型數據所以能夠很容易被視圖使用。

很典型的,視圖模型會定義能被展現在 UI 上并被用戶調用的的命令或者行為。一個通用的例子就是當視圖模型需要提交命令時會允許用戶提交數據到網絡服務或者數據庫。視圖可以選擇用一個按鈕來展示所以用戶能夠點擊該按鈕提交數據。典型地,當命令編程不可用的,它相關的 UI 展示也變得不可用。視圖模型通常扮演下面這些關鍵角色:

  • 模型視圖是非可視化類,它封裝了展現邏輯

  • 視圖模型是可以獨立于視圖與模型調試的

  • 視圖模型很典型地是不直接引用視圖的

  • 視圖模型實現了視圖用來數據綁定的屬性與命令

  • 視圖模型通過改變提醒事件通知視圖狀態的改變:INotifyPropertyChanged 與 INotifyCollectionChanged

  • 視圖模型協調視圖與模型的交互

  • 視圖模型可以定義視圖展現給用戶的邏輯狀態

模型類

model 在 MVVM 模式中封裝了業務邏輯以及數據,業務邏輯定義了像所有檢索和程序數據管理相關的程序邏輯一樣,用來確保所有的保證數據持久與有效的業務規則被應用。***化代碼重用,模型不能包含任何特定的情況,特定的用戶任務以及程序邏輯。

典型的有模型為程序展現了客戶端域模型,模型也可能包含支持數據訪問與緩存的代碼,即使有一個分離的數據庫或者服務被使用。模型與數據房分層通常被作為數據訪問或嗚嗚結構而生成,例如 ADO.NET 尸體礦井唉,WCF 數據服務,或者 WCF RIA 服務。

模型層實現了輕松綁定視圖的功能。這通常意味著它支持通過 INotifyPropertyChanged 與 INotifyCollectionChanged 進行屬性與集合更改通告。展現對象集合的模型類典型地源自 ObservableCollection<T>類,該類提供了對 INotifyCollectionChanged 接口的實現。

模型也能通過 IDataErrorInfo 接口支持數據驗證以及錯誤報告。這些接口允許當數值改變時的 WPF 數據綁定被通知,從而更新界面。模型通常扮演如下的關鍵角色:

  • 模型類是不可視類,它封裝了程序數據

  • 模型類不直接應用視圖或視圖模型類

  • 模型類不依賴于它們是如何實現的

  • 模型類是典型地通過 INotifyPropertyChanged/INotifyCollectionChanged 接口提供屬性與集合更改事件的.

  • 模型類很典型地繼承自 ObservableCollection<T> 類

  • 模型類是很典型地通過 IDataErrorInfo/INotifyDataErrorInfo.提供數據驗證與錯誤報告

  • 模型類典型地與封裝了數據訪問的服務一起使用。

看完上述內容,你們掌握如何理解.NET MVVM設計模式的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛冈县| 龙口市| 大兴区| 海丰县| 沙田区| 安吉县| 和林格尔县| 龙口市| 育儿| 北流市| 桂平市| 彭泽县| 宝清县| 古交市| 南宫市| 哈巴河县| 霍邱县| 内丘县| 东山县| 互助| 上杭县| 涪陵区| 安平县| 团风县| 乡城县| 榆社县| 南乐县| 安图县| 涡阳县| 东丰县| 玉环县| 二连浩特市| 湘西| 平和县| 正镶白旗| 深泽县| 成安县| 冕宁县| 土默特右旗| 南康市| 孝义市|