在我看来,我实施了WPF DataGrid from CodePlex:
<toolkit:DataGrid x:Name="CodePlexDataGrid"
Style="{StaticResource ToolkitDataGrid}"
ItemsSource="{Binding Customers}"/>
它绑定到我的ViewModel中的ObservableCollection:
private ObservableCollection<Customer> _customers;
public ObservableCollection<Customer> Customers
{
get
{
return _customers;
}
set
{
_customers = value;
OnPropertyChanged("Customers");
}
}
当我更改网格中的数据时,它会发生变化,但我找不到任何事件我可以处理以捕获这些更改,例如DataGridCellChanged以便我可以保存输入数据库的数据。
什么是流程,通过它我们可以捕获对单元格的更改并将其保存回数据库?
答案 0 :(得分:0)
我一直在使用CellEditEnding
和RowEditEnding
这些事件,它们不适合您的需要吗?
答案 1 :(得分:0)
尝试以不同的方式接近它。而不是绑定到DataGrid上的事件,在Customer上实现INotifyPropertyChanged并处理Customer对象的属性更改事件。在WPF(而不是Silverlight)中,我认为您可以使用BindingList而不是ObservableCollection来观察集合中任何项目的属性更改。
对于Silverlight,我创建了一个ObservableCollection的子类,它为添加到集合中的任何项连接了PropertyChanged事件处理程序,然后将它们冒泡到集合公开的ItemPropertyChanged事件。
我可以这样做:
myCollection.ItemPropertyChanged += (sender,e) => {
// sender is the item whose property changed
// e is PropertyChangedEventArgs which has the name of the property that changed
}