Datagrid.RowEditEnding不返回更新值

我是C#WPF的新手,正在对DataGrid进行一些非常基本的测试。 我可以将数据绑定到DataGrid,但在我修改行之后,我只能收到旧数据。 有人能告诉我我的代码有什么问题吗? 这是我的代码:

XAML

           

代码隐藏

 using System.Windows; namespace abc { public partial class MainWindow : Window { EmployeeList emp = new EmployeeList(); public MainWindow() { InitializeComponent(); dgEmployee.ItemsSource = emp; } private void OnRowEditEnding(object sender, System.Windows.Controls.DataGridRowEditEndingEventArgs e) { var _emp = e.Row.Item as Employee; MessageBox.Show(string.Format("updated record:\n{0}\n{1}\n{2}", _emp.EmpNo, _emp.EmpName, _emp.Salary)); } } } 

这是Employee类:

 using System.Collections.ObjectModel; namespace abc { public class Employee { private int _empNo; private string _empName; private decimal _salary; public Employee(int Id, string Name, decimal wage) { this._empNo = Id; this._empName = Name; this._salary = wage; } public int EmpNo { get { return _empNo; } set { _empNo = value; } } public string EmpName { get { return _empName; } set { _empName = value; } } public decimal Salary { get { return _salary; } set { _salary = value; } } } public class EmployeeList : ObservableCollection { public EmployeeList() : base() { Add(new Employee(1, "Bart Simpson", (decimal)10)); Add(new Employee(2, "Homer Simpson", (decimal)500)); Add(new Employee(3, "Maggie Simpson", (decimal)200)); } } } 

每次更改属性时,都需要更改WPF绑定以强制更新回Employee类。 目前,默认情况下,它仅在焦点丢失时更新,这发生在OnRowEditEnding事件之后:

  

解决方法:使用另一个事件更新要更改的静态行列表,以在roweditending事件之后更新行

  private void datagrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e) { rows2change.Add(e.Row.GetIndex()); } private void datagrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e) { if (rows2change.Count > 0) { saveMyData(rows2change[0]); rows2change.Remove(rows2change[0]); } }