【问题标题】:Datagrid is not properly refreshing on row deleteDatagrid 在行删除时未正确刷新
【发布时间】:2015-01-15 14:15:09
【问题描述】:

我正在使用 WPF 中绑定到 collectionviewsource 的数据网格。视图源绑定到名为 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());

        }
    }

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

【问题讨论】:

    标签: c# wpf observablecollection collectionviewsource


    【解决方案1】:

    您可能忘记在数据网格上调用刷新方法来更新其可视元素,例如行。

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

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

    这个问题可能是因为 PropertyChange 没有被正确引发。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多