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到總項目您的幫助和時間

+0

你能提供的XAML中呢? 'UpdatePerson'做了什麼? – meilke

+0

如果您關注[MVVM](http://msdn.microsoft.com/zh-cn/magazine/dd419663.aspx)模式,這樣做會容易得多。 –

+0

如果您綁定屬性而不是設置它,它會工作嗎? – Rachel

回答

0

嘗試改變

相關問題