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

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

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

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

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

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

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

C#

在軟體開發中,處理使用者輸入是一個常見的任務,同時也時常伴隨著數據驗證的需求。 在 WPF 或其他 Windows 平台的 MVVM 架構中,要完成數據驗證,可以選擇使用 ValidationRule、IDataErrorInfo 和 INotifyDataErrorInfo 這幾個類別或接口。 其中 IDataErrorInfo 和 INotifyDataErrorInfo 的部分為 in...
C#

在WPF開發中(或其他Windows框架),若要實現MVVM架構的話,通常需要實作 INotifyPropertyChanged、ICommand,這兩個 interface 。自己先前的習慣是,從網路上找其他人寫好的實作,複製到自己的專案中使用,且每開一次新專案,就複製一份。 某天如往常地尋找資料時,發現了微軟在 Nuget 上的 CommunityToolkit.Mvvm 套件(也稱為M...
C#



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