winform MVVM ReactiveUI
ReactiveUI是实现了MVVM模式的框架,它的核心目标是能够在ViewModel中相关属性发生变化时能够可执行相应的命令。ReactiveUI支持Xamarin、WPF、WinForm、Windows Phone、UWP。这里咱们选择WinForm对应的版本ReactiveUI.WinForms。
选择“管理NuGet程序包”,在打开的窗口中选择“浏览”,并搜索ReactiveUI.WinForms进行安装
1.在项目目录下新建文件夹ViewModel,并在文件夹下新建一个PersonViewModel类,写入以下代码:函数
2.须要继承自ReactiveObject
public class PersonViewModel : ReactiveObject
{
private int _id;
public int Id
{
get { return _id; }
set
{
this.RaiseAndSetIfChanged(ref _id, value);
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
this.RaiseAndSetIfChanged(ref _name, value);
}
}
private int _age;
public int Age
{
get { return _age; }
set
{
this.RaiseAndSetIfChanged(ref _age, value);
}
}
}
3.新建Form1窗口 在窗体上拖入3个textbox和3个label控件
4.视图窗体须要实现IViewFor接口,并且须要绑定的ViewModel类(本例中的ViewModel是PersonViewModel)做为泛型传入接口
public partial class Form1 : Form, IViewFor
{
public PersonViewModel ViewModel { get; set; }
public Form1()
{
InitializeComponent();
this.WhenActivated(a =>
{
a(this.Bind(ViewModel, vm => vm.Id, v => v.textBox1.Text));
a(this.Bind(ViewModel, vm => vm.Name, v => v.textBox2.Text));
a(this.Bind(ViewModel, vm => vm.Age, v => v.textBox3.Text));
a(this.OneWayBind(ViewModel, vm => vm.Id, v => v.label1.Text));
a(this.OneWayBind(ViewModel, vm => vm.Name, v => v.label2.Text));
a(this.OneWayBind(ViewModel, vm => vm.Age, v => v.label5.Text));
});
ViewModel = new PersonViewModel();
}
object IViewFor.ViewModel
{
get { return ViewModel; }
set { ViewModel = (PersonViewModel)value; }
}
}
这样运行程序,在控件中输入值 标签也会同步修改数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!