C# 更新数据网格

C# 更新数据网格,c#,wpf,binding,observablecollection,C#,Wpf,Binding,Observablecollection,我有一个数据网格,它从一个可观察的集合获取他的数据 我的可观察到的采集: public ObservableCollection<CodeElement> _codeElementList; public ObservableCollection<CodeElement> codeElementList { get { return _codeElementList; } set { if (value != _codeElemen

我有一个
数据网格
,它从一个
可观察的集合
获取他的数据

我的<代码>可观察到的采集:

public ObservableCollection<CodeElement> _codeElementList;
public ObservableCollection<CodeElement> codeElementList
{
    get { return _codeElementList; }
    set
    {
        if (value != _codeElementList)
        {
            _codeElementList = value;
            OnPropertyChanged("codeElementList");
        }
    }
}
分配

        public MainWindow()
        {
            InitializeComponent();

            codeElementList = DBAnbindung.LoadCodeList();

            dtGCode.ItemsSource = codeElementList;
        }
observedcollection
数据库中获取数据。当我启动程序时,我可以看到所有条目。现在我选择一个
codelement
并将其删除。在
数据库中删除
codelement
,但my
DataGrid
为空

            CodeElement code = dtGCode.SelectedItem as CodeElement;
            DBAnbindung.DeleteCode(code);
            codeElementList.Clear();
            codeElementList = DBAnbindung.LoadCodeList();
我做错了什么?
如果您想查看我如何在我的
可观察集合中加载
数据
,请告诉我如何添加而不是分配新列表

codeElementList.AddRange(DBAnbindung.LoadCodeList());

foreach(var item in DBAnbindung.LoadCodeList())
     codeElementList.Add(item);

问题就在这条线上

 codeElementList = DBAnbindung.LoadCodeList();

您正在将另一个
ObservableCollection
分配给
codeElementList
so
dtGCode。ItemsSource
和新的
codeElementList
将不会指向内存中的同一对象。然后,当您更改
codelementlist
时,实际上您并没有更改
dtGCode.ItemsSource

谢谢您,它可以正常工作!我的ObservableCollection没有函数“AddRange”,但您的第二种方法非常有用是的AddRange是Microsoft.Practices.Prism中ObservableCollection的扩展方法
 codeElementList = DBAnbindung.LoadCodeList();