抱歉,您的瀏覽器無法訪問本站
本頁面需要瀏覽器支持(啟用)JavaScript
了解詳情 >

在物件導向開發中,觀察者模式經常應用於模組化與封裝的設計中。它能讓物件以彈性的方式傳遞訊息,是實現鬆耦合的一種常見做法。

而在 C# 中,常用 event、Action/ Func、RX 等方式實作觀察者模式,看似達成了解耦。但實際上,訂閱者仍需知道事件來源,這造成一種隱性耦合,讓物件之間仍有依賴。

CommunityToolkit.Mvvm 套件中,除了提供 MVVM 架構下常用的 ObservableObject 與 ObservableValidator 外,還支援基於中介者模式的訊息傳遞機制 Messenger。

該機制讓訊息的發送者與觀察者無需彼此參照,只需註冊並透過 Messenger 發送訊息,就能由框架轉發給所有訂閱者。為了整合這套機制,套件也提供了 ObservableRecipient 類別,讓 ViewModel 更容易註冊與接收訊息。

這邊要注意的是,使用 Messenger 並不代表完全沒有耦合,而是將依賴轉向了中介物件 ( Messenger 本身),達成相對鬆耦合的設計。

本次將使用 WPF 並搭配 CommunityToolkit.Mvvm 套件的ObservableRecipient 物件與 Messenger 機制,實作訊息傳遞的示範。

C#

在軟體開發中,處理使用者輸入是一個常見的任務,同時也時常伴隨著數據驗證的需求。

在 WPF 或其他 Windows 平台的 MVVM 架構中,要完成數據驗證,可以選擇使用 ValidationRule、IDataErrorInfo 和 INotifyDataErrorInfo 這幾個類別或接口。

其中 IDataErrorInfo 和 INotifyDataErrorInfo 的部分為 interface ,不僅要進行實作以外,因 MVVM 架構也需要一併實作 INotifyPropertyChanged 。而在 ViewModel 實作上,綁定的屬性也需要撰寫許多涉及 Property 的程式碼,使的開發的過程稍嫌繁瑣。

本篇的主題, CommunityToolkit.Mvvm 套件提供了實作 MVVM 架構時所需要的物件,其中的一個部分便是關於數據驗證,其中提供的物件,不只實作了 INotifyDataErrorInfo 與 INotifyPropertyChanged 等, MVVM 所需實現的interface外,同時也有提供方便的 Attribute 來簡化程式碼。

本次將進行該套件的數據驗證物件並使用 WPF 的示範。

C#

在WPF開發中(或其他Windows框架),若要實現MVVM架構的話,通常需要實作 INotifyPropertyChanged、ICommand,這兩個 interface 。自己先前的習慣是,從網路上找其他人寫好的實作,複製到自己的專案中使用,且每開一次新專案,就複製一份。

某天如往常地尋找資料時,發現了微軟在 Nuget 上的 CommunityToolkit.Mvvm 套件(也稱為MVVM工具包)。該套件不但實作了MVVM所需要的物件,還提供一些好用的 Attribute ,讓程式碼可以更精簡,從而讓開發人員更專注在重要的程式邏輯中。

關於 CommunityToolkit.Mvvm 套件使用方法,預計拆分成幾篇不同主題的文章,而本次將記錄,在未使用此套件之前的做法,接著套件的安裝方法、基本使用,以及如何使用其提供的 Attribute 功能。

C#



本站使用 Volantis 作為主題,總訪問量為 次