当我从集合中添加或删除项目时,为什么带有ObservableCollection <t>的DataGrid显然没有刷新?</t>

时间:2014-10-23 13:13:10

标签: c# wpf mvvm datagrid

我遇到了DataGrid及其底层ObservableCollection的问题。我想以编程方式从集合中添加和删除行,并将结果显示在DataGrid中。虽然我希望这对我来说会自动发生,但事实并非如此。我发现如果我之后对数据进行排序,那么行将按我想要的那样显示。这是我的所作所为:

  1. DataGrid的ItemsSource设置为我的ObservableCollection&lt; T&gt;。

  2. 用户点击按钮,触发ICommand,删除值为X的行。

  3. 用户看到的内容完全相同:没有删除任何行。

  4. 用户单击列标题可对DataGrid进行排序。现在删除了行。

  5. 这里发生了什么?我想删除的行,直到我对列进行排序。我也发现了别的东西。如果我刷新DataGrid.Items,则删除行。那段代码很简单:

    this.dg.Items.Refresh();  //"dg" is my DataGrid
    

    虽然这不是MVVM,但它确实有用。

1 个答案:

答案 0 :(得分:3)

确保将直接绑定到ObservableCollection,例如,您没有使用任何Linq运算符,将其包装在集合视图/代理等中。任何转换/集合中不会转发集合更改事件的包装器将阻止网格收到更改通知。