全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

MAUI Community Toolkit怎么用 MVVM库使用指南

MAUI中用CommunityToolkit.Mvvm实现MVVM只需三点:装对包(CommunityToolkit.Mvvm 8.2.2+)、写对类(partial+ObservableObject+ObservableProperty/RelayCommand特性)、绑对DataContext(服务注入或页面级设置)。

MAUI 中用 CommunityToolkit.Mvvm 做 MVVM 开发,核心就三点:装对包、写对类、绑对 DataContext。它不是“配置一堆东西才能跑”,而是加个特性、继承一个基类,编译时自动生成通知和命令代码,轻量又高效。

安装 CommunityToolkit.Mvvm 包

必须用 NuGet 安装最新稳定版(如 8.2.2),不要用已废弃的 Microsoft.Toolkit.Mvvm

  • 在 MAUI 项目(.csproj)里添加:
  • 确保启用 C# 11 源生成器支持,在项目文件中加入:
    11.0
  • 不用手动引用其他依赖,也不用改 TargetFramework —— 它自动适配 .NET 6/7/8 和 MAUI 运行时

定义 ViewModel 类

ViewModel 必须是 partial 类,继承 ObservableObject,再用特性标记字段即可。

  • [ObservableProperty] 标记私有字段,自动生成带通知的 public 属性
    例如:[ObservableProperty] private string _title = "首页"; → 自动生成 Title 属性并触发 PropertyChanged
  • [RelayCommand] 标记方法,自动生成 ICommand 字段和执行逻辑
    例如:[RelayCommand] private void Save() { ... } → 自动生成 SaveCommand 属性
  • 异步命令直接用 [RelayCommand] + async Task 方法,会生成 IAsyncRelayCommand
  • 不需要手写 INotifyPropertyChangedSetPropertynew RelayCommand(...) 等模板代码

在 MAUI 页面中绑定 ViewModel

MAUI 不像 WPF 那样默认支持全局资源字典,推荐两种主流方式:

  • 页面级绑定:在 MainPage.xaml.cs 构造函数中设置:
    BindingContext = new MainViewModel();
  • 服务注入式绑定(更推荐):
    MauiProgram.cs 注册:
    builder.Services.AddSingletonainViewModel>();
    然后在页面后台或 XAML 中解析:
    BindingContext = serviceProvider.GetService();
  • XAML 中使用:

进阶但实用的功能点

几个高频但容易忽略的细节:

  • 命令可执行控制:加 CanExecute 参数,比如 [RelayCommand(CanExecute = nameof(CanSave))],对应写一个返回 bool 的方法
  • 消息通信:用 WeakReferenceMessenger 替代传统事件,避免内存泄漏,无需手动解订阅
  • 验证与状态:配合 ObservableValidator 可快速实现属性级数据验证(如非空、长度限制)
  • 调试技巧:编译后可在 obj/Debug/net8.0/generated/ 下查看源生成器实际产出的代码,方便理解底层逻辑

基本上就这些。不复杂,但容易忽略 partialLangVersion 这两个关键点。装完包、写好类、设好 BindingContext,就能立刻响应数据变化和按钮点击了。


# ai  # microsoft  # c#  # .net  # String  # 构造函数  # include  # bool  # void  # 继承  #   # public  # private  # 事件  # 异步  # wpf  # 自动生成  # 绑定  # 三点  # 进阶  # 几个  # 就能  # 不需要  # 两种  # 只需  # 这两个 


相关文章: 免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  建站之星伪静态规则如何正确配置?  PHP 500报错的快速解决方法  如何在Windows服务器上快速搭建网站?  c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】  网站制作话术技巧,网站推广做的好怎么话术?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  如何高效利用亚马逊云主机搭建企业网站?  如何用虚拟主机快速搭建网站?详细步骤解析  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  英语简历制作免费网站推荐,如何将简历翻译成英文?  如何确认建站备案号应放置的具体位置?  盘锦网站制作公司,盘锦大洼有多少5G网站?  如何在景安服务器上快速搭建个人网站?  建站之星如何配置系统实现高效建站?  清除minerd进程的简单方法  魔毅自助建站系统:模板定制与SEO优化一键生成指南  打鱼网站制作软件,波克捕鱼官方号怎么注册?  如何制作一个表白网站视频,关于勇敢表白的小标题?  制作网站公司那家好,网络公司是做什么的?  定制建站哪家更专业可靠?推荐榜单揭晓  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  如何在搬瓦工VPS快速搭建网站?  网站制作新手教程,新手建设一个网站需要注意些什么?  c# Task.ConfigureAwait(true) 在什么场景下是必须的  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  广州建站公司哪家好?十大优质服务商推荐  建站主机功能解析:服务器选择与快速搭建指南  如何选择服务器才能高效搭建专属网站?  c# 在高并发场景下,委托和接口调用的性能对比  如何在腾讯云服务器快速搭建个人网站?  北京专业网站制作设计师招聘,北京白云观官方网站?  c# await 一个已经完成的Task会发生什么  行程制作网站有哪些,第三方机票电子行程单怎么开?  如何选择可靠的免备案建站服务器?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  建站之家VIP精选网站模板与SEO优化教程整合指南  建站之星如何通过成品分离优化网站效率?  如何通过多用户协作模板快速搭建高效企业网站?  已有域名和空间如何搭建网站?  如何在IIS中新建站点并配置端口与物理路径?  北京网站制作的公司有哪些,北京白云观官方网站?  潮流网站制作头像软件下载,适合母子的网名有哪些?  简历在线制作网站免费版,如何创建个人简历?  外贸公司网站制作,外贸网站建设一般有哪些步骤?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  定制建站价位费用解析与套餐推荐全攻略 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。