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的列表组件,代码几乎是直接Copy过来的,参考链接Masa Blazor列表

用户列表

聊天窗口

这个简单,左侧是一个列表,同上面的用户列表类似,只是去掉了上方蓝色的MToolbar和用户的详细描述信息,右侧则是多行文本框显示聊天记录、单行文本框输入即时聊天信息、一个发送按钮(简单描述,不贴代码,后面有仓库链接)。

聊天窗口

打開子窗口

列表的点击事件,使用IEventAggregator发送打开子窗体事件 OpenUserDialogEvent,事件订阅方法执行弹出子窗体操作:

打开窗口

演示發送消息

发送消息按钮点击,使用IEventAggregator 发送发送消息事件SendMessageEvent,事件订阅方法接收消息,并追加到各自历史聊天多行文本框展示:

演示发送消息

源碼

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

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

  • 自定義的窗體還是wpf模式實現的

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

  • prism.dryioc和iservicecollection兩個ioc容器重複註冊對象

    本以为搞混合开发挺简单的,实际做才会遇到问题,如果要实现模块化,两种容器可能会处理类似的对象依赖注入,比如IEventAggregatorPrism中是默认注入了,如果Razor中使用还要注入到IServiceCollection中。

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

Keep Exploring

延伸阅读

更多文章
同分类 / 同标签 2025/1/26

wpf 藉助自定義 xml 文件實現國際化

本文詳細居間了在wpf程式中使用自定義xml文件實現國際化的方法,包括安裝必備nuget包、動態獲取語言列表、動態切換語言、在代碼和xaml界面中使用翻譯字符串等內容,同時提供了源碼連結,幫助開發者輕鬆實現wpf應用的國際化。

继续阅读