我是C#的新手,我试图在我的数据网格中进行更改以触发我的主要方法。
我上课了:
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();
}
}
我在这里遗漏了什么吗?当我在datagrid上更改某些内容时,items_CollectionChanged方法不会被触发。我有一种感觉,我没有正确地订阅这个活动。 OnPropertyChanged方法被正确触发,但之后没有任何反应。
非常感谢任何帮助。
谢谢,
编辑:我应该指出我只能访问.Net 4
答案 0 :(得分:0)
据我了解,Collection Changed仅在创建集合时触发,或者在添加或删除时触发,但在集合内部更改时不会触发。
您想要完成的事情可以通过Datagrid本身的事件来完成,
e.g。通过使用DataGridView.CellValueChanged事件。
另一个解决方案是扩展ObservableCollection类。 看看这里:array-like collection