Winform通过Databinding以及InotifyPropertychanged实现绑定(仿MVVM)

该文章展示了如何在C#中创建一个基础的ViewModel类,该类实现了INotifyPropertyChanged接口用于数据绑定。接着创建了一个MVM类,继承自VMBase,包含FirstName、LastName和FullName属性。在主窗体中,将这些属性与UI控件进行数据绑定,当文本框内容改变时,自动更新视图模型的属性值。
摘要由CSDN通过智能技术生成

1.创建一个ViewModel类

在这里插   internal class VMBase : INotifyPropertyChanged
    {

        public event PropertyChangedEventHandler PropertyChanged;
        
        protected virtual void OnPropertyChanged([CallerMemberName]string propertyName=null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }入代码片

2.创建一个Mvm类继承VMBase

  internal class MVM:VMBase
    {
        private string firstName="Fn";

        public string FirstName
        {
            get { return firstName; }
            set
            {
                firstName = value;
                OnPropertyChanged();
                OnPropertyChanged();
            }
        }

        private string lastName="Ln";

        public string LastName
        {
            get { return lastName; }
            set
            {
                lastName = value;
                OnPropertyChanged();
                OnPropertyChanged();
            }
        }
        private string fullName="FUllName";

        public string FullName
        {
            get { return fullName; }
            set {
                fullName = value;
                OnPropertyChanged();
                OnPropertyChanged();
            }
        }
    }
```3.主窗体实现

```csharp
在这里插    MVM mVM = new MVM();
        private void Form1_Load(object sender, EventArgs e)
        {
         
            label1.DataBindings.Add("Text", mVM,"FirstName");//控件的属性字符串,数据源,属性的字符串,是否格式化,数据更新方式
            label2.DataBindings.Add("Text", mVM, "LastName",false, DataSourceUpdateMode.OnPropertyChanged);
            label3.DataBindings.Add("Text", mVM, "FullName", false, DataSourceUpdateMode.OnPropertyChanged);
            
        }

        private void TextBox1_TextChanged(object sender, EventArgs e)
        {
            mVM.FirstName = textBox1.Text;
            mVM.FullName = textBox1.Text+textBox2.Text;
        }

        private void TextBox2_TextChanged(object sender, EventArgs e)
        {
            mVM.LastName = textBox2.Text;
            mVM.FullName = textBox1.Text + textBox2.Text;
        }入代码片
```使用[CallerMemberName]避免在触发事件输入属性的字符串,更加方便!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值