首页 >后端开发 >C++ >C#中如何在属性值变化时触发事件?

C#中如何在属性值变化时触发事件?

Patricia Arquette
Patricia Arquette原创
2024-12-30 13:33:10885浏览

How to Trigger an Event When a Property Value Changes in C#?

如何引发属性值变化事件

问题描述:

您想要每当特定属性(例如 ImageFullPath1)的值发生更改时触发事件。虽然 INotifyPropertyChanged 是一种已知的解决方案,但您更喜欢基于事件的方法。

答案:

要使用事件实现属性更改通知,请利用 INotifyPropertyChanged 接口:

public class MyClass : INotifyPropertyChanged
{
    // ...
}

INotifyPropertyChanged 接口定义了一个 PropertyChanged 事件,消费者可以订阅。要触发此事件,请实现 OnPropertyChanged 方法:

protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
    // ...
}

protected void OnPropertyChanged(string propertyName)
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

对于 ImageFullPath1 属性,按如下所示更新设置器:

public string ImageFullPath1
{
    get { ... }
    set
    {
        if (value != ImageFullPath1)
        {
            ImageFullPath1 = value;
            OnPropertyChanged(nameof(ImageFullPath1));
        }
    }
}

或者,对于特定属性,您可以创建其他事件:

protected void OnImageFullPath1Changed(EventArgs e)
{
    // ...
}

public event EventHandler ImageFullPath1Changed;

在属性设置器中,添加OnPropertyChanged 之后的 OnImageFullPath1Changed(EventArgs.Empty)。

使用 .NET 4.5 改进的代码:

使用 .NET 4.5,您可以使用 CallerMemberNameAttribute 进行更简洁的实现:

protected void OnPropertyChanged(
    [System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
    OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}

以上是C#中如何在属性值变化时触发事件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn