0
我有一個DataGrid和我綁定可觀察集合到它無法更新在WPF數據網格中的項目,價值都是一樣
private void BindDG()
{
ObservableCollection<Person> personList = new ObservableCollection<Person>(PersonXml.GetPersonList());
dgPersons.ItemsSource = personList;
}
Person類如下: -
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
事件處理程序沒有一個vail
private void DgPersons_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
DataGrid grid = (DataGrid)sender;
grid.CommitEdit(DataGridEditingUnit.Row, true);
}
我在做什麼錯。當我調試我的應用程序時,年齡和薪水的值永遠不會改變,總是與最初開始的一樣。
感謝您使用的BindingList代替的ObservableCollection到總項目您的幫助和時間
你能提供的XAML中呢? 'UpdatePerson'做了什麼? – meilke
如果您關注[MVVM](http://msdn.microsoft.com/zh-cn/magazine/dd419663.aspx)模式,這樣做會容易得多。 –
如果您綁定屬性而不是設置它,它會工作嗎? – Rachel