【问题标题】:Cannot update an item in WPF datagrid, values are always the same无法更新 WPF 数据网格中的项目,值始终相同
【发布时间】: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


【解决方案1】:

尝试使用 BindingList 而不是 ObservableCollection 来聚合项目更改

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 2018-11-21
    • 2013-06-10
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多