Datagrid在行删除时没有正确刷新

时间:2015-01-15 14:15:09

标签: c# wpf observablecollection collectionviewsource

我正在使用绑定到collectionsviewsource的WPF中的datagrid。 viewsource绑定到名为 Rows 的可观察集合。

数据网格具有添加和删除功能,除小问题外,其功能正常。

以下是图片:

enter image description here

数据网格有比这更多的数据。每个测试都以两个序列开始(您看到的两行属于单个测试),它们按唯一ID进行分组和排序。

enter image description here

我点击红色“X”删除该行。我现在点击图片左上角的“添加”按钮。

enter image description here

数据仍然存在。

这些是我的添加和删除功能:

private void Add(object sender, ExecutedRoutedEventArgs e)
        {
            var testRun = e.Parameter as TestRun;
            if (testRun != null)
            {
                var numberOfRows = testRun.Property.GetValue("numberOfRows").ToNullable<int>().GetValueOrDefault(2);
                numberOfRows++;
                testRun.Property.SetValue("numberOfRows", numberOfRows.ToString());
                this.Rows.Add(new ESCHandle(testRun, numberOfRows));
            }
        }

private void Delete(object sender, ExecutedRoutedEventArgs e)
    {
        var esc = e.Parameter as ESCHandle;
        if (esc != null)
        {
            this.Rows.Remove(esc);
            var numberOfRows = esc.TestRun.Property.GetValue("numberOfRows").ToNullable<int>().GetValueOrDefault(2);
            numberOfRows--;
            esc.TestRun.Property.SetValue("numberOfRows", numberOfRows.ToString());

        }
    }

从Delete上的observablecollection中正确删除ESC对象。但是当我向colleciton和datagrid添加另一个ESC对象/行时,数据以某种方式被复制到新对象。

1 个答案:

答案 0 :(得分:0)

您可能忘记在datagrid上调用refresh方法来更新其可视元素,例如行。

Datagrid.Items.Refresh(),如下所述:

http://programmer.wrighton.org/2009/01/wpf-datagrid-items-refresh.html

可能是因为未正确引发PropertyChange而导致此问题。