WPF中的INotifyPropertyChanged接口

INotifyPropertyChanged 是一个在 WPF (Windows Presentation Foundation) 和 .NET 中使用的接口,它用于实现数据绑定时的数据更新通知。当实现了 INotifyPropertyChanged 接口的类的属性值发生变化时,这个接口允许对象通知绑定到该对象属性的 UI 元素,以便 UI 元素可以更新其显示的内容。

接口定义

INotifyPropertyChanged 接口定义如下:

cs 复制代码
public interface INotifyPropertyChanged
{
    event PropertyChangedEventHandler PropertyChanged;
}

事件处理

  • PropertyChanged :这是一个事件,当实现类的属性值发生变化时,需要触发这个事件。PropertyChangedEventHandler 是一个委托,它指向一个方法,该方法接收两个参数:发送事件的对象(通常是属性发生变化的对象本身)和一个 PropertyChangedEventArgs 对象,后者包含发生变化的属性的名称。

实现 INotifyPropertyChanged

要实现 INotifyPropertyChanged,你需要在你的类中声明 PropertyChanged 事件,并在属性的 set 访问器中触发这个事件。以下是一个简单的实现示例:

cs 复制代码
public class Person : INotifyPropertyChanged
{
    private string _name;

    public string Name
    {
        get { return _name; }
        set
        {
            if (_name != value)
            {
                _name = value;
                OnPropertyChanged("Name");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

使用 INotifyPropertyChanged

当你的数据对象实现了 INotifyPropertyChanged 接口后,你可以在 WPF 中使用数据绑定,将 UI 元素绑定到这些对象的属性上。当属性值发生变化时,UI 会自动更新以反映新的值。

XML 复制代码
<TextBox Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />

在这个 XAML 代码中,TextBoxText 属性被绑定到了 Person 对象的 Name 属性上。由于 Name 属性的 set 访问器中触发了 PropertyChanged 事件,所以每当 Name 发生变化时,TextBox 都会更新其显示的内容。

INotifyPropertyChanged 是实现响应式 UI 和数据绑定的关键组件,它确保了 UI 和数据之间的同步更新。

相关推荐
dotent·1 天前
C#基于WPF UI框架的通用基础上位机测试WPF框架
ui·c#·wpf
咩图2 天前
WPF+Prism8.0.0.1909+C#创建一个桌面程序
c#·wpf·prism
雁于飞2 天前
分布式基础
java·spring boot·分布式·spring·wpf·cloud native
oioihoii2 天前
WPF入门指南:解析默认项目结构
wpf
极客智造3 天前
深入解析 ReactiveUI:WPF 响应式 MVVM 开发的 “终极方案”
wpf
Macbethad4 天前
使用WPF编写一个多维度伺服系统的程序
大数据·hadoop·wpf
lingxiao168884 天前
WPF Prism框架应用
c#·wpf·prism
Macbethad5 天前
使用WPF编写一个Ethercat主站的程序
wpf
难搞靓仔5 天前
WPF 弹出窗体Popup
wpf·popup
Macbethad5 天前
使用WPF编写一个MODBUSTCP通信的程序
wpf