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 和数据之间的同步更新。

相关推荐
Scout-leaf5 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
柒.梧.7 天前
基于SpringBoot+JWT 实现Token登录认证与登录人信息查询
wpf
十月南城10 天前
Flink实时计算心智模型——流、窗口、水位线、状态与Checkpoint的协作
大数据·flink·wpf
听麟13 天前
HarmonyOS 6.0+ 跨端会议助手APP开发实战:多设备接续与智能纪要全流程落地
分布式·深度学习·华为·区块链·wpf·harmonyos
@hdd13 天前
Kubernetes 可观测性:Prometheus 监控、日志采集与告警
云原生·kubernetes·wpf·prometheus
zls36536513 天前
C# WPF canvas中绘制缺陷分布map
开发语言·c#·wpf
专注VB编程开发20年13 天前
c#Redis扣款锁的设计,多用户,多台电脑操作
wpf
闲人编程14 天前
定时任务与周期性调度
分布式·python·wpf·调度·cron·定时人物·周期性
zls36536514 天前
C# WPF canvas中绘制缺陷分布map并实现缩放
开发语言·c#·wpf
数据知道15 天前
PostgreSQL:Citus 分布式拓展,水平分片,支持海量数据与高并发
分布式·postgresql·wpf