WPF混合Blazor做個簡易聊天小程式

WPF混合Blazor做個簡易聊天小程式

晚上花了4、5個小時,學習了下Wpf + Blazor混合模式開發,感覺不錯

最後更新 2022/10/28 上午1:09
沙漠尽头的狼
預計閱讀 3 分鐘
分類
WPF Blazor
標籤
.NET C# Blazor WPF

大家好,我是沙漠盡頭的狼。

今天嘗試了WPF混合Blazor開發,感覺不錯,順便把測試的程式簡單分享下:WPF混合Blazor開發的一個簡易對話程式。

使用技術棧:

搭建WPF+Blazor程式

學習WPF + Blazor混合開發的Hello World最好的地方是微軟文件:

https://learn.microsoft.com/zh-cn/aspnet/core/blazor/hybrid/tutorials/wpf?view=aspnetcore-7.0

效果

UI使用了Masa Blazor,效果個人覺得不錯,如果用WPF實現,要麻煩不少,以下是幾個效果截圖:

使用者列表視窗

使用了Masa Blazor的列表元件,程式碼幾乎是直接複製過來的,參考連結Masa Blazor列表

使用者列表

聊天視窗

這個簡單,左側是一個列表,同上面的使用者列表類似,只是去掉了上方藍色的MToolbar和使用者的詳細描述資訊,右側則是多行文字框顯示聊天記錄、單行文字框輸入即時聊天資訊、一個傳送按鈕(簡單描述,不貼程式碼,後面有倉庫連結)。

聊天視窗

開啟子視窗

列表的點選事件,使用IEventAggregator傳送開啟子視窗事件 OpenUserDialogEvent,事件訂閱方法執行彈出子視窗操作:

開啟視窗

示範傳送訊息

傳送訊息按鈕點選,使用IEventAggregator 傳送傳送訊息事件SendMessageEvent,事件訂閱方法接收訊息,並追加到各自歷史聊天多行文字框顯示:

示範傳送訊息

原始碼

GitHub:https://github.com/dotnet9/WPFBlazorChat

效果還行,程式碼就不解釋了,有興趣的跑起來看看,目前有幾點後面有時間再優化,畢竟現在快凌晨兩點了:

  • 自訂的視窗還是WPF模式實現的

    視窗透明,Border滑鼠按下事件實現視窗拖動、右上角關閉視窗按鈕實現視窗關閉,後面有空再嘗試也使用Razor實現吧。

  • Prism.DryIoc和IServiceCollection兩個Ioc容器重複註冊物件

    本以為搞混合開發挺簡單的,實際做才會遇到問題,如果要實現模組化,兩種容器可能會處理類似的物件依賴注入,比如IEventAggregatorPrism中是預設注入了,如果Razor中使用還要注入到IServiceCollection中。

更多點,後面再補充,今天只是嘗試...

繼續探索

延伸閱讀

更多文章
同分類 / 同標籤 2025/1/26

WPF 藉助自訂 XML 檔案實現國際化

本文詳細介紹了在WPF程式中使用自訂XML檔案實現國際化的方法,包括安裝必備NuGet套件、動態獲取語言清單、動態切換語言、在程式碼和XAML介面中使用翻譯字串等內容,同時提供了原始碼連結,幫助開發者輕鬆實現WPF應用程式的國際化。

繼續閱讀