编辑
2025-09-24
C#
00

目录

摘要
正文

摘要

在计算机编程领域,MVVM(Model-View-ViewModel)模式是一种常用的软件架构模式。它主要由三个组件构成:模型(Model)、视图(View)和视图模型(ViewModel)。这种模式旨在通过分离用户界面(View)和应用程序逻辑(Model和ViewModel)来提高代码的可维护性和可重用性。

在WPF(Windows Presentation Foundation)和VUE(Vue.js)等前端框架中,MVVM模式已经被广泛采用。它们的视图层与视图模型紧密耦合,使得前端应用程序更加灵活、易于维护。同时,这种模式还提供了一种清晰的编程模型,可以让开发人员更容易地实现状态管理、数据绑定和UI交互等功能。

相比之下,在WINFORM(Windows Forms)应用程序中,MVVM模式并不是非常流行。这可能是因为WINFORM的设计哲学更注重图形界面和应用程序的外观,而不是程序的内部结构和逻辑。此外,WINFORM还提供了一些现成的工具和组件,使得开发人员可以更容易地创建交互式用户界面。

正文

先创建一个MODEL

C#
public class Person : INotifyPropertyChanged { private string _name; private string _email; private string _phone; public string Name { get { return this._name; } set { this._name = value; OnPropertyChanged("Name"); } } public string Email { get { return this._email; } set { this._email = value; OnPropertyChanged("Email"); } } public string Phone { get { return this._phone; } set { this._phone = value; OnPropertyChanged("Phone"); } } public event PropertyChangedEventHandler? PropertyChanged; public void OnPropertyChanged(string propertyName) { if(PropertyChanged!=null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } }

在UI上绑定属性

C#
Person person; public Form1() { InitializeComponent(); person = new Person() { Name = "Test", Email = "test@163.com", Phone = "1877777777" }; txtEmail.DataBindings.Add(new Binding("Text", person, "Email")); txtName.DataBindings.Add(new Binding("Text", person, "Name")); txtPhone.DataBindings.Add(new Binding("Text", person, "Phone")); label1.DataBindings.Add(new Binding("Text", person, "Name")); label2.DataBindings.Add(new Binding("Text", person, "Email")); label3.DataBindings.Add(new Binding("Text", person, "Phone")); }

image.png

这样基本完成了一个绑定,但这个事件是在changed后发生的,不像vue等可以为keypress事件。其实了解其原理,也就是一个Property的changed。

  • VM模型引用INotifyPropertyChanged接口,当属性发生改变时,即执行了set访问器,触发事件
  • 将控件的属性与模型属性绑定

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!