更新DataGrid

时间:2013-03-26 11:20:56

标签: c# wpf binding observablecollection

我有DataGrid,从ObservableCollection获取数据。

我的ObservableCollection

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

我也测试了ObservableCollection

public ObservableCollection<CodeElement> codeElementList { get; set; }

分配

        public MainWindow()
        {
            InitializeComponent();

            codeElementList = DBAnbindung.LoadCodeList();

            dtGCode.ItemsSource = codeElementList;
        }

ObservableCollectiondatabase获取数据。当我启动程序时,我可以看到所有条目。现在我选择codeElement并删除它。 codeElement中删除了database,但我的DataGrid为空。

            CodeElement code = dtGCode.SelectedItem as CodeElement;
            DBAnbindung.DeleteCode(code);
            codeElementList.Clear();
            codeElementList = DBAnbindung.LoadCodeList();
我做错了什么? 如果您想了解我如何在data加载ObservableCollection,请告诉谦虚

2 个答案:

答案 0 :(得分:1)

您尝试添加而不是分配新列表

codeElementList.AddRange(DBAnbindung.LoadCodeList());

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

答案 1 :(得分:1)

问题出在这一行

 codeElementList = DBAnbindung.LoadCodeList();

您正在为ObservableCollection分配另一个codeElementList,因此dtGCode.ItemsSourcecodeElementList不会指向内存中的同一个对象。然后,当您对codeElementList进行更改时,实际上您并未更改dtGCode.ItemsSource