【发布时间】:2013-09-26 19:14:36
【问题描述】:
我有一个数据网格,我正在将一个可观察的集合绑定到它
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);
}
我做错了什么。当我调试我的应用程序时,年龄和薪水的值永远不会改变,总是和最初开始时一样。
感谢您的帮助和时间
【问题讨论】:
-
您也可以提供 XAML 吗?
UpdatePerson是做什么的? -
如果您遵循MVVM 模式,这将更容易做到。
-
如果你绑定属性而不是设置它是否有效?
-
如果您使用内置事务功能,则在 WPF 数据网格中编辑单元格效果最佳。尝试以获得更好的结果。此外,可观察集合必须是公共属性!
-
@Gary 你如何编辑 WPF 数据网格中的单元格?
标签: c# wpf wpfdatagrid observablecollection inotifypropertychanged