c# List<T> 类型的属性 用 INotifyPropertyChanged 示例
时间: 2024-09-15 15:07:21 浏览: 56
对ObservableCollection的Doubles进行排序
在 C# 中,如果 `List<T>` 类型的属性需要实时更新并且希望监听其变化,你可以使用 `INotifyPropertyChanged` 接口。以下是一个简单的示例:
首先,在你的自定义类中,添加 `INotifyPropertyChanged` 接口和一个 `IsPropertyChanged` 字段用于标识是否有更改发生:
```csharp
using System.ComponentModel;
public class MyListClass : INotifyPropertyChanged
{
private List<int> myList;
private bool isPropertyChanged = false;
public List<int> MyList
{
get => myList;
set
{
if (myList != value)
{
myList = value;
isPropertyChanged = true;
OnPropertyChanged("MyList");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
```
然后在你的业务操作中,当列表内容改变时,`isPropertyChanged` 会被设置为 `true` 并调用 `OnPropertyChanged` 来引发通知。
使用这个类时,订阅它的 `PropertyChanged` 事件即可获取列表更改的通知:
```csharp
MyListClass listObj = new MyListClass();
listObj.PropertyChanged += (sender, e) =>
{
if (e.PropertyName == "MyList")
{
Console.WriteLine("MyList has been changed!");
}
};
// 更新列表
listObj.MyList = new List<int>();
```
阅读全文