我正在使用绑定到collectionsviewsource的WPF中的datagrid。 viewsource绑定到名为 Rows 的可观察集合。
数据网格具有添加和删除功能,除小问题外,其功能正常。
以下是图片:
数据网格有比这更多的数据。每个测试都以两个序列开始(您看到的两行属于单个测试),它们按唯一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());
}
}
从Delete上的observablecollection中正确删除ESC对象。但是当我向colleciton和datagrid添加另一个ESC对象/行时,数据以某种方式被复制到新对象。
答案 0 :(得分:0)
您可能忘记在datagrid上调用refresh方法来更新其可视元素,例如行。
Datagrid.Items.Refresh()
,如下所述:
http://programmer.wrighton.org/2009/01/wpf-datagrid-items-refresh.html
可能是因为未正确引发PropertyChange而导致此问题。