У меня есть DataGrid и я связывание наблюдаемой коллекции к немуНевозможно обновить элемент в WPF DataGrid, значение всегда одинаково
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
не является vail
private void DgPersons_OnCellEditEnding(object sender, DataGridCellEditEndingEventArgs e)
{
DataGrid grid = (DataGrid)sender;
grid.CommitEdit(DataGridEditingUnit.Row, true);
}
Что я делаю неправильно. Когда я отлаживаю свое приложение, значения для возраста и зарплаты никогда не меняются, всегда такие же, как они начались изначально.
Спасибо за вашу помощь и время
Можете ли вы предоставить XAML, а? Что делает «UpdatePerson'? – meilke
Это было бы намного проще сделать, если бы вы следили за шаблоном [MVVM] (http://msdn.microsoft.com/en-us/magazine/dd419663.aspx). –
Это работает, если вы привязываете свойство вместо его настройки? – Rachel