INotifyPropertyChanged怎么写
时间: 2024-12-18 12:22:36 浏览: 5
`INotifyPropertyChanged`是.NET框架中的一个接口,它用于表示一个对象的属性值发生了变化,并通知所有对该对象进行了监视的观察者(通常是依赖于该属性的UI元素)。为了在你的类中使用`INotifyPropertyChanged`,你需要做以下几件事:
1. 在类中添加`INotifyPropertyChanged`接口:
```csharp
using System.ComponentModel;
public class MyClass : INotifyPropertyChanged
{
// ...
}
```
2. 创建`PropertyChanged`事件:
```csharp
private event PropertyChangedEventHandler PropertyChanged;
// 在setter方法中引发PropertyChanged事件
public string MyProperty
{
get { return myProperty; }
set
{
if (myProperty != value)
{
myProperty = value;
OnPropertyChanged("MyProperty"); // 发起通知
}
}
}
private void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
```
这里的`OnPropertyChanged`方法是一个空的委托,当你通过`PropertyChanged`事件触发属性更改时,会被具体的监听者(如XAML中的`<Binding>`)捕获并更新UI。
3. 注册监听事件:
在依赖你的类的任何地方,比如在XAML中绑定到属性时,你可以订阅这个事件:
```xaml
<DataGrid ItemsSource="{Binding MyCollection}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding MyProperty}" />
</DataGrid.Columns>
</DataGrid>
// 在ViewModel中注册
this.PropertyChanged += OnPropertyChanged;
```
这样,每当`MyProperty`的值发生变化时,`DataGrid`的内容就会自动刷新。
阅读全文