全网整合营销服务商

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

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

Avalonia如何使用ReactiveUI框架 Avalonia ReactiveUI入门

直接上手 ReactiveUI + Avalonia 仅需三步:选对模板(新建项目时勾选“Avalonia .NET MVVM App”并指定 ReactiveUI)、装好包(含 ReactiveUI.SourceGenerators)、写对绑定(用 RaiseAndSetIfChanged 或 [Reactive] 属性、ReactiveCommand 或 [ReactiveCommand] 方法、Routing 导航)。

直接上手 ReactiveUI + Avalonia,关键就三步:选对模板、装好包、写对绑定。不用从零配环境,官方模板已集成支持。

创建项目时就选ReactiveUI

用 Visual Studio 或 Rider 新建 Avalonia 项目时,在模板选择页明确勾选 “Avalonia .NET MVVM App”,下一步中 MVVM Toolkit 选项里必须选 ReactiveUI(不是 CommunityToolkit 或默认空选项)。这一步决定后续所有 ViewModel 基类、命令写法和绑定语法是否原生可用。

  • 项目生成后,ViewModels 文件夹下自动带 MainWindowViewModel,继承的是 ReactiveUI.ViewModelBase
  • Views 文件夹下 MainWindow.axaml 的 x:DataType 默认指向对应 ViewModel,启用编译时绑定检查
  • App.axaml.cs 中已配置好 Splat 依赖注入容器,可直接注册服务

数据绑定用 RaiseAndSetIfChanged 或 [Reactive]

ReactiveUI 提供两种主流方式让属性变更自动通知 UI:

  • 手动写:用 this.RaiseAndSetIfChanged(ref _field, value) 替代传统 INotifyPropertyChanged 实现
  • 自动写:加 [Reactive] 特性(需引用 ReactiveUI.SourceGenerators),编译期生成完整属性逻辑,代码更干净

例如:

[Reactive] public string? UserName { get; set; }
[Reactive] public bool IsLoading { get; set; }

命令绑定用 ReactiveCommand 或 [ReactiveCommand]

用户操作(如按钮点击)不直接写事件处理函数,而是暴露 ReactiveCommand 属性:

  • 基础写法:public ReactiveCommand SubmitCommand { get; },构造函数中用 ReactiveCommand.Create(() => { ... })
  • 进阶写法:用 [ReactiveCommand] 特性(同样依赖 SourceGenerators),方法自动转为命令,支持 CanExecute 和执行异步逻辑
  • AXAML 中直接 Command="{Binding SubmitCommand}",无需 CommandParameter 包装

页面导航靠 Routing + ViewModel 激活

ReactiveUI 内置路由系统,适合多页应用:

  • 主窗口 ViewModel 继承 RoutableViewModel,声明 RoutingState 实例
  • 子页面 ViewModel 继承 ReactiveViewModel,并实现 IActivatableViewModel
  • 跳转用 Router.Navigate.Execute(new DetailViewModel()),返回用 Router.NavigateBack()
  • 页面激活/失活逻辑(如加载数据、清理订阅)放在 WhenActivated 块里,避免内存泄漏

基本上就这些。不复杂但容易忽略的是:每次新建 ViewModel 都要确认基类是 ReactiveUI 的,而不是 Avalonia 自带的 ViewModelBase;绑定语法保持一致,别混用 CommunityToolkit 的 [ObservableProperty]。跑通一个按钮 + 文本更新,后面就顺了。


# react  # app  # ai  # 路由  # win  # .net  # gate  # gate.  # 构造函数  # 继承  # public  # 事件  # this  # 异步  # visual studio  # ui  # router  # 绑定  # 的是  # 三步  # 装好  # 勾选  # 进阶  # 放在  # 都要  # 两种  # 时就 


相关文章: 专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何通过VPS建站实现广告与增值服务盈利?  建站之星CMS五站合一模板配置与SEO优化指南  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  Swift中循环语句中的转移语句 break 和 continue  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  宝塔新建站点报错如何解决?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  javascript基本数据类型及类型检测常用方法小结  Swift开发中switch语句值绑定模式  c++怎么用jemalloc c++替换默认内存分配器【性能】  建站之星IIS配置教程:代码生成技巧与站点搭建指南  零服务器AI建站解决方案:快速部署与云端平台低成本实践  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何正确下载安装西数主机建站助手?  湖北网站制作公司有哪些,湖北清能集团官网?  高端企业智能建站程序:SEO优化与响应式模板定制开发  开心动漫网站制作软件下载,十分开心动画为何停播?  如何通过wdcp面板快速创建网站?  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站之星价格显示格式升级,你的预算足够吗?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】  Android自定义listview布局实现上拉加载下拉刷新功能  如何在云服务器上快速搭建个人网站?  如何在IIS7中新建站点?详细步骤解析  学校建站服务器如何选型才能满足性能需求?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  为什么Go需要go mod文件_Go go mod文件作用说明  太原网站制作公司有哪些,网约车营运证查询官网?  网站制作公司排行榜,抖音怎样做个人官方网站  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  已有域名和空间,如何快速搭建网站?  如何有效防御Web建站篡改攻击?  建站之星ASP如何实现CMS高效搭建与安全管理?  大连网站制作公司哪家好一点,大连买房网站哪个好?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何在Golang中指定模块版本_使用go.mod控制版本号  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站主机选哪家性价比最高?  建站主机CVM配置优化、SEO策略与性能提升指南  如何通过主机屋免费建站教程十分钟搭建网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程? 

您的项目需求

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