Avalonia CommunityToolkit.Mvvm怎么用 Avalonia MVVM工具包教程


Avalonia 配 CommunityToolkit.Mvvm 三步即可运行:安装 NuGet 包、继承 ObservableObject 并用 [ObservableProperty] 标记字段、XAML 中绑定属性与 [RelayCommand] 生成的命令,全程编译时源生成,无需反射、IOC 或手动通知。

avalonia communitytoolkit.mvvm怎么用 avalonia mvvm工具包教程

用 Avalonia 配 CommunityToolkit.Mvvm 很直接:装包、写 ViewModel、绑定 View,三步就跑起来。它不依赖反射,靠源生成器在编译时自动补全通知逻辑和命令代码,轻量又高效。

安装与基础配置

在 Visual Studio 中右键项目 →「管理 NuGet 程序包」→ 搜索 CommunityToolkit.Mvvm → 安装最新稳定版(如 8.2.2)。支持 .NET 6/8+,Avalonia 11+ 兼容良好,无需额外引用或手动配置。

  • 确保项目目标框架是 .NET 6 或更高版本
  • 不用改 App.xaml.cs,默认初始化方式即可,无需注册 IOC 容器(除非你主动要用)
  • 若之前用了 ReactiveUI 或其他 MVVM 包,记得卸载对应包,避免冲突

写一个可响应的 ViewModel

新建类(如 MainViewModel.cs),继承 ObservableObject,用 [ObservableProperty] 标记私有字段,生成器会自动创建带通知的公共属性:

  • [ObservableProperty] private string _title = "欢迎"; → 自动生成 Title 属性及变更通知
  • [ObservableProperty] private bool _isEnabled; → 支持双向绑定和界面实时刷新
  • 需要验证时,可继承 ObservableValidator,配合 [Required][MinLength(2)] 等特性

绑定命令与交互逻辑

[RelayCommand] 特性声明方法,生成器自动创建 ICommand 属性并关联执行逻辑:

MacsMind MacsMind

电商AI超级智能客服

MacsMind 192 查看详情 MacsMind
  • [RelayCommand] private void AddItem() { /* 实现 */ } → 自动生成 AddItemCommand 属性
  • CanExecute 参数(如 [RelayCommand(CanExecute = nameof(CanAdd))])→ 自动监听对应布尔方法返回值,控制按钮是否可用
  • 异步操作用 [RelayCommand] 标记 async Task 方法 → 自动生成 IAsyncRelayCommand

View 中绑定数据和命令

Avalonia XAML 中通过 x:DataType 声明 ViewModel 类型,启用编译时绑定检查:

  • MainView.axaml 根元素加:x:DataType="vm:MainViewModel"(需先 xmlns:vm 声明命名空间)
  • 文本框绑定:Text="{Binding Title, Mode=TwoWay}"
  • 按钮命令绑定:Command="{Binding AddItemCommand}"
  • 不要在后台代码(.axaml.cs)里手动设 this.DataContext = new MainViewModel(),否则可能干扰设计时绑定

基本上就这些。写法简洁,没冗余代码,也不用记一堆接口实现细节。重点是理解 [ObservableProperty][RelayCommand] 是编译期“写好”的,不是运行时靠反射拼出来的——所以快、安全、IDE 支持好。

以上就是Avalonia CommunityToolkit.Mvvm怎么用 Avalonia MVVM工具包教程的详细内容,更多请关注其它相关文章!


# 右键  # 品牌网站建设模板  # 进度影响关键词排名吗  # 网站建设51cto  # 汽车微信营销推广方案  # 网络营销推广的渠道包括  # 西安电商营销推广招聘  # 如何做好外贸推广营销策略  # app营销推广的建议  # 建设局网站建设方案书  # 家具网站建设选择哪家好  # 用了  # 相关文章  # react  # 客服  # 怎么处理  # 三步  # 工具包  # 有哪些  # 自动生成  # 绑定  # red  # .net  # ai  # 工具  # app 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 苹果官网国补入口在哪  在VS Code中进行数据科学和机器学习开发  Highcharts雷达图轴线交点数值标注指南  LINUX怎么查看显卡信息_LINUX查看GPU状态  三星M34录音变声问题_Samsung M34麦克风调整  PSD转AI文件的简单方法  嘴唇干裂起皮怎么办 唇部护理与预防干裂的方法【详解】  Go Template中优雅处理循环最后一项:自定义函数实践  2025考研成绩查询时间入口分享  C++如何将字符串转换为大写或小写_C++ transform函数的使用技巧  在J*a里什么是行为抽象_抽象行为对代码复用的提升作用  《大周列国志》皇帝律令功能介绍  Go反射进阶:访问内嵌结构体中的被遮蔽方法  中通快递官网指定查询 中通快递单号查询平台入口  汽水音乐车机版官网5.0 汽水音乐车机版5.0版本下载入口  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  申通快件单号查询平台 申通包裹物流动态跟踪  《百度畅听版》关闭兴趣推荐方法  如何在mysql中设计餐饮点餐系统_mysql点餐系统项目实战  德邦物流在线查询系统 德邦快递货物运输追踪  照片整理的黄金法则是怎样的? 理解“收集-筛选-归档-备份”四步流程  顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南  掌握CSS :has() 选择器:父选择器、嵌套限制与常见陷阱解析  C#解析来自网络的XML流数据 实时错误处理与重试机制  《随手记》关闭首页消息推送方法  《战地6》反作弊已成功拦截240万次作弊 发售第一周98%比赛没有作弊  优化 React onClick 事件处理:函数引用与箭头函数的对比  谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法  J*a中的值传递到底指什么_值传递模型在参数传递中的真正含义说明  Git命令与VS Code UI操作的对应关系解析  t3出行如何使用微信支付  夸克浏览器资源嗅探怎么用 夸克浏览器网页资源下载技巧【教程】  《崩坏:星穹铁道》3.6版本异相仲裁打法及配队推荐  QQ网站入口直接登录 QQ官方正版登录页面  汽水音乐车机版 汽水音乐车机版官方入口  智学网成绩单查询系统网_智学网学生平台登录  纯CSS实现自适应宽度与响应式布局的水平按钮组  如何用Golang优化微服务间请求性能_Golang 微服务请求性能优化方法  Sublime怎么快速复制文件路径_Sublime右键菜单增强技巧  PHP页面重载时变量值不重置的实现方法  易车网官网直达入口 易车网在线登录入口  Go语言反射机制:如何访问被嵌入结构体遮蔽的方法  圆通快递官网入口查询单号 手机版官方查询入口  智云Q3和Q2有什么升级_智云Q3与Q2手持云台功能与性能对比分析  iPhone 14 Pro如何更改区域设置_iPhone 14 Pro地区语言修改教程  Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】  《豆瓣》私信用户方法  《三角洲行动》战斗步枪与机枪类改装代码分享  win11如何开启单声道音频 Win11为听障用户合并左右声道【辅助】  c++如何链接Boost库_c++准标准库的集成与使用 

 2025-12-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.