代码(与问题相关)
<DataGrid Grid.Row="1"
ItemsSource="{Binding WatchList}" />
public static WatchListData<Quote> watchList;
watchList=new WatchListData <Quote>();
public WatchListData <Quote> WatchList
{
get { return watchList; }
set
{
watchList = value;
}
}
public class WatchListData<Quote> : ObservableCollection<Quote>
{
protected override void OnCollectionChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
base.OnCollectionChanged(e);
MessageBox.Show(e.Action.ToString());
}
}
public class Quote : INotifyPropertyChanged
{
private string _symbol;
private double _last;
public string Symbol
{
get { return _symbol; }
set
{
_symbol = value;
NotifyPropertyChanged("Symbol");
}
}
public double Last
{
get { return _last; }
set
{
_last = value;
NotifyPropertyChanged("Last");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
问题 我有WPF DataGrid绑定到ObservableCollection。当用户点击datagrid时,键入文本并按Enter键或单击其他行或窗口,他添加新行,我需要获取此行并执行一些代码。此外,当用户更改单元格中的值时,我需要获取此事件。我正在尝试使用 覆盖void OnCollectionChanged 但是当用户开始键入新单元格时(在他按下第一个键后,但是不是当他完成时)并且当用户更改现有单元格中的文本时不触发。只有“添加”操作会提前触发,根本不会触发“替换”操作。有可能解决方案吗?