C# Datagrid在删除行时未正确刷新

C# Datagrid在删除行时未正确刷新,c#,wpf,observablecollection,collectionviewsource,C#,Wpf,Observablecollection,Collectionviewsource,我正在使用WPF中绑定到collectionviewsource的datagrid。viewsource绑定到名为Rows的可观察集合 datagrid具有添加和删除功能,除小问题外,这些功能正常运行 以下是图片: datagrid的数据比这多。每个测试都从两个序列开始(您看到的两行属于一个测试),它们按唯一ID分组和排序 我已单击红色的“X”删除该行。现在,我将单击位于图像左上角的“添加”按钮 数据仍然存在 以下是我的添加和删除功能: private void Add(object se

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

datagrid具有添加和删除功能,除小问题外,这些功能正常运行

以下是图片:

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

我已单击红色的“X”删除该行。现在,我将单击位于图像左上角的“添加”按钮

数据仍然存在

以下是我的添加和删除功能:

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());

        }
    }
private void Add(对象发送方,ExecutedRoutedEventArgs e)
{
var testRun=e.参数为testRun;
if(testRun!=null)
{
var numberOfRows=testRun.Property.GetValue(“numberOfRows”).tonulable().GetValueOrDefault(2);
numberOfRows++;
testRun.Property.SetValue(“numberOfRows”,numberOfRows.ToString());
添加(新的ESCHandle(testRun,numberOfRows));
}
}
私有void Delete(对象发送方,ExecutedRoutedEventArgs e)
{
var esc=e.参数作为ESCHandle;
如果(esc!=null)
{
此.Rows.Remove(esc);
var numberOfRows=esc.TestRun.Property.GetValue(“numberOfRows”).tonulable().GetValueOrDefault(2);
行数--;
esc.TestRun.Property.SetValue(“numberOfRows”,numberOfRows.ToString());
}
}

ESC对象在删除时从observablecollection中正确删除。但是,在将另一个ESC对象/行添加到colleciton和datagrid时,数据会以某种方式复制到新对象

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

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

导致此问题的原因可能是未正确引发PropertyChange