C# 无法更新WPF datagrid中的项,值始终相同
我有一个datagrid,我正在将一个可观察的集合绑定到它C# 无法更新WPF datagrid中的项,值始终相同,c#,wpf,wpfdatagrid,observablecollection,inotifypropertychanged,C#,Wpf,Wpfdatagrid,Observablecollection,Inotifypropertychanged,我有一个datagrid,我正在将一个可观察的集合绑定到它 private void BindDG() { ObservableCollection<Person> personList = new ObservableCollection<Person>(PersonXml.GetPersonList()); dgPersons.ItemsSource = personList; } 更新方法如下:- public class Person : INo
private void BindDG()
{
ObservableCollection<Person> personList = new ObservableCollection<Person>(PersonXml.GetPersonList());
dgPersons.ItemsSource = personList;
}
更新方法如下:-
public class Person : INotifyPropertyChanged
{
public string name { get; set; }
public string surname { get; set; }
private int _age;
public int age
{
get { return _age ; }
set
{
if (value != _age)
{
_age = value;
OnPropertyChanged("age");
}
}
}
private int _salary;
public int salary
{
get { return _salary; }
set
{
if (value != _salary)
{
_salary = value;
OnPropertyChanged("salary");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
private void Update_Click(object sender, RoutedEventArgs e)
{
var selPerson = (Person)dgPersons.SelectedItem;
if (UpdatePerson(selPerson))
BindDG();
}
我还实现了CellEditEnding
事件处理程序,但没有成功
private void DgPersons_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
DataGrid grid = (DataGrid)sender;
grid.CommitEdit(DataGridEditingUnit.Row, true);
}
我做错了什么。当我调试我的应用程序时,年龄和薪水的值永远不会改变,始终与最初启动时相同
感谢您的帮助和时间尝试使用BindingList而不是ObservableCollection来聚合项目更改您也可以提供XAML吗?
UpdatePerson
做什么?如果您遵循该模式,这将更容易做到。如果您绑定属性而不是设置属性,它是否有效?如果您使用内置事务功能,在WPF数据网格中编辑单元格效果最佳。试试看,效果更好。此外,可观察集合必须是公共属性@Gary如何编辑WPF数据网格中的单元格?