首页 > 其他分享 >INotifyPropertyChanged

INotifyPropertyChanged

时间:2023-11-06 15:22:23浏览次数:33  
标签:控件 INotifyPropertyChanged propertyName 绑定 public Name

  可以将TextBox控件(其他控件也基本一样)与某个变量进行绑定,做出改变变量则控件也跟着改变的效果。

  首先需要声明一个类,该类用来与控件绑定:

using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace TestWPF
{
    public class Person : INotifyPropertyChanged
    {
        private string _Name;

        public string Name
        {
            get => _Name; //等同于return _Name;
            set
            {
                _Name = value;
                //执行通知属性已经发生改变
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name"));
            }
        }

        #region resharper补全代码

        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        protected bool SetField<T>(ref T field, T value, [CallerMemberName]string propertyName = null)
        {
            if (EqualityComparer<T>.Default.Equals(field, value))
            {
                return false;
            }

            field = value;
            OnPropertyChanged(propertyName);
            return true;
        }

        #endregion
    }
}

  然后在XAML文件中绑定:

<TextBox Name="textBox1" Width="400" Height="200" Text="{Binding Name}" />//Name为要绑定的变量

  其中,继承的INotifyPropertyChanged类是用来发送消息告诉控件变量的值改变了,控件需要作出调整。 

  接着实例化相应的对象,并跟控件绑定:

public partial class MainWindow : Window
{
    public Person person = new Person();

    public MainWindow()
    {
        //初始化
        InitializeComponent();
        person.Name          = "1313";//初始赋值
        textBox1.DataContext = person;
    }

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        person.Name = textbox2.Text;
    }
}

  

  点击按钮修改变量Name的值后,textBox的文本随之改变:

 

标签:控件,INotifyPropertyChanged,propertyName,绑定,public,Name
From: https://www.cnblogs.com/shieryoufeng/p/17812789.html

相关文章

  • LYT-WPF-MVVM框架中的INotifyPropertyChanged
    参考文档:WPFMVVM框架中的INotifyPropertyChanged-知乎(zhihu.com)INotifyPropertyChanged接口用于通知视图或ViewModel绑定哪个属性无关紧要;它已更新。让我们举个例子来理解这个接口。以一个WPF窗口为例,其中共有三个字段:名字、姓氏和全名。在这里,名字和姓氏文本框是可编......
  • C# INotifyPropertyChanged Small Demo
    publicclassPChangeTest:INotifyPropertyChanged{publiceventPropertyChangedEventHandlerPropertyChanged;privatevoidOnPropertyChange......
  • 【转】C#-INotifyPropertyChanged(解决数据绑定的界面刷新问题)
    C#-INotifyPropertyChanged(解决数据绑定的界面刷新问题) 最近做项目用到DataGridView,用它绑定数据源后,如果数据源中的数据修改无法及时刷新到控件上,必须切换单元......
  • 数据绑定以及更新(INotifyPropertyChanged)的原理
    转载:https://www.cnblogs.com/cdaniu/p/16460065.html学习之前要具备的知识点1、依赖属性、依赖对象、xaml标记扩展https://docs.microsoft.com/en-us/dotnet/desktop/w......
  • 【WPF】INotifyPropertyChanged 的原理刨析
    1、本文转载自https://blog.csdn.net/qhwoaini/article/details/1258360372、Wpf中的Binding    熟悉wpf的朋友都知道wpf中大部分控件都继承自FrameworkElement,F......
  • INotifyPropertyChanged
    C#-INotifyPropertyChanged(解决数据绑定的界面刷新问题)最近做项目用到DataGridView(property同理),用它绑定数据源后,如果数据源中的数据修改无法及时刷新到控件上,必须切换......