CompactGUI MVVM模式实现:CommunityToolkit.Mvvm在VB.NET中的应用

CompactGUI MVVM模式实现:CommunityToolkit.Mvvm在VB.NET中的应用

【免费下载链接】CompactGUI Transparently compress active games and programs using Windows 10/11 APIs 【免费下载链接】CompactGUI 项目地址: https://gitcode.com/gh_mirrors/co/CompactGUI

CompactGUI是一个利用Windows 10/11 API透明压缩游戏和程序的工具,它采用了现代化的MVVM架构模式,通过CommunityToolkit.Mvvm库在VB.NET项目中实现了清晰的关注点分离。本文将深入解析CompactGUI如何运用MVVM模式和CommunityToolkit.Mvvm来构建高效的用户界面。

🏗️ MVVM架构在CompactGUI中的应用

CompactGUI的整个项目结构严格遵循MVVM模式,将界面逻辑、业务逻辑和数据模型清晰地分离开来:

ViewModels层CompactGUI/ViewModels/ 包含了所有视图模型:

  • MainWindowViewModel.vb - 主窗口视图模型
  • HomeViewModel.vb - 主页视图模型
  • SettingsViewModel.vb - 设置视图模型
  • DatabaseViewModel.vb - 数据库视图模型
  • WatcherViewModel.vb - 文件夹监控视图模型

Models层CompactGUI/Models/ 定义了数据结构和业务对象:

  • CompressableFolder.vb - 可压缩文件夹模型
  • CompressionOptions.vb - 压缩选项模型
  • SteamACFResult.vb - Steam解析结果模型

Views层CompactGUI/Views/ 包含了所有XAML界面文件:

  • MainWindow.xaml - 主窗口界面
  • HomePage.xaml - 主页界面
  • SettingsPage.xaml - 设置页面界面

🔧 CommunityToolkit.Mvvm核心功能应用

ObservableObject和ObservableProperty

在MainWindowViewModel.vb中,我们可以看到CommunityToolkit.Mvvm的典型应用:

Partial Public Class MainWindowViewModel : Inherits ObservableRecipient
    <ObservableProperty>
    Private _BackgroundImage As BitmapImage

通过[ObservableProperty]属性,编译器会自动生成完整的属性实现,包括属性更改通知。

RelayCommand命令绑定

CompactGUI大量使用RelayCommand来实现命令绑定:

<RelayCommand>
Private Sub NotifyIconOpen()
    _windowService.ShowMainWindow()
End Sub

消息传递机制

项目还利用了CommunityToolkit.Mvvm的消息传递功能:

Imports CommunityToolkit.Mvvm.Messaging

Public Sub Receive(message As PropertyChangedMessage(Of CompressableFolder)) 
    ' 处理接收到的消息
End Sub

🎯 MVVM模式带来的优势

1. 清晰的职责分离

  • View: 只负责UI呈现和用户交互
  • ViewModel: 处理界面逻辑和命令绑定
  • Model: 定义数据结构和业务规则

2. 更好的可测试性

由于业务逻辑与UI分离,可以轻松对ViewModel进行单元测试。

3. 维护性提升

当需要修改界面或业务逻辑时,可以在各自的层中进行,不会相互影响。

📁 核心ViewModel实现分析

MainWindowViewModel.vb

作为应用程序的主视图模型,它继承了ObservableRecipient,处理窗口生命周期、系统托盘操作等核心功能。

依赖注入和服务定位

CompactGUI通过构造函数注入依赖服务:

Public Sub New(windowService As IWindowService, watcher As Watcher.Watcher, settingsService As ISettingsService)
    _watcher = watcher
    _windowService = windowService
    _settingsService = settingsService
End Sub

💡 在VB.NET项目中应用MVVM的最佳实践

1. 合理使用源生成器

利用[ObservableProperty][RelayCommand]等源生成器特性,可以大幅减少样板代码。

2. 消息驱动的组件通信

对于松散耦合的组件间通信,使用消息传递机制而不是直接引用。

3. 服务层抽象

将文件操作、网络请求等具体实现封装在服务层,ViewModel只关注业务逻辑。

🚀 性能优化建议

  • 对于频繁更新的属性,考虑使用[NotifyPropertyChangedFor]来优化通知性能
  • 合理使用[AlsoNotifyChangeFor]来处理相关属性的联动更新
  • 在适当的场景下使用弱引用避免内存泄漏

🎉 总结

CompactGUI项目展示了如何在VB.NET中成功应用MVVM模式和CommunityToolkit.Mvvm库。通过这种架构,项目实现了:

  • 高度可维护的代码结构
  • 良好的可扩展性
  • 优秀的测试支持
  • 清晰的开发分工

通过学习和借鉴CompactGUI的MVVM实现方式,开发者可以在自己的VB.NET项目中构建更加健壮和可维护的应用程序架构。

【免费下载链接】CompactGUI Transparently compress active games and programs using Windows 10/11 APIs 【免费下载链接】CompactGUI 项目地址: https://gitcode.com/gh_mirrors/co/CompactGUI

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值