使用 INotifyPropertyChanged 在 C# 中触发事件
本文关键字:事件 INotifyPropertyChanged 使用 | 更新日期: 2023-09-27 18:34:46
我是 C# 的新手,我正在尝试更改我的数据网格以触发我的 main 方法。
我有我的班级:
public class siteMatch : INotifyPropertyChanged
{
public string SelectedTag
{
get { return _SelectedTag; }
set
{
if (value != _SelectedTag)
{
_SelectedTag = value;
OnPropertyChanged(_SelectedTag);
}
}
}
private string _SelectedTag;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, e);
}
protected void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
}
我的主要课程中有这个:
public partial class MainWindow : Window
{
public ObservableCollection<siteMatch> sitesMatched = new ObservableCollection<siteMatch>();
public MainWindow()
{
InitializeComponent();
sitesMatched.CollectionChanged += new System.Collections.Specialized.NotifyCollectionChangedEventHandler(items_CollectionChanged);
}
static void items_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
foreach (INotifyPropertyChanged item in e.OldItems)
item.PropertyChanged -= new PropertyChangedEventHandler(item_PropertyChanged);
foreach (INotifyPropertyChanged item in e.NewItems)
item.PropertyChanged += new PropertyChangedEventHandler(item_PropertyChanged);
}
static void item_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//throw new NotImplementedException();
}
}
我在这里错过了什么吗?当我更改数据网格上的某些内容时,不会触发 items_CollectionChanged 方法。我有一种感觉,我没有正确订阅该活动。OnPropertyChanged 方法被正确触发,但之后没有任何反应。
任何帮助将不胜感激。
谢谢
编辑:我应该指出,我只能访问.Net 4
据我了解,集合更改仅在创建集合或添加或删除时触发,而不是在更改集合中的某些内容时触发。
你想要完成的事情可以用数据网格本身上的事件来完成,
例如,通过使用 DataGridView.CellValueChanged 事件。
另一种解决方案是扩展 ObservableCollection 类。看看这里 : https://stackoverflow.com/a/5256827/3042778