尽管通知,数据网格仍未显示添加的记录

时间:2015-11-01 18:36:01

标签: c# wpf xaml mvvm data-binding

我正在视图模型中向列表中添加实例,如下所示。由于列表被监听但不是单独的项目,我意识到我需要明确告诉视图它所绑定的列表已更新。

public class ThingyViewModel : INotifyPropertyChanged
{
  public List<Thingy> Thingies { get; set; }

  public void Register(Thingy thingy)
  {
    using (ServiceClient client = ...)
      client.Register(thingy);
    Thingies.Add(thingy);
    OnPropertyChanged("Thingies");
  }
  ...
}

方法 OnPropertyChanged 是VS提供的默认实现,我在其他地方使用它。因此,我没有理由怀疑那里有任何犯规。

当我在视图模型中调用 Register 时在我的视图中中断执行时,我可以在数据上下文中清楚地看到新实例不在列表之前的列表中呼叫。同样清楚的是,我可以看到它在执行操作后的数据上下文中。

所以,如果数据上下文确实获取新实例并且调用了通知(是的,我已经检查了四倍的拼写),那么还有什么问题呢?显然我错过了一些东西但是在这一点上,我看不出那是什么 - 我需要一两个指针。

<igDP:XamDataGrid Name="DataGrid"
                  DataSource="{Binding Path=Thingies}"
                  ...>

1 个答案:

答案 0 :(得分:1)

如果你对Thingies属性使用ObservableCollection(你的代码缺少它是什么集合......),那么当新项目被添加或删除时,该集合将通知自己,并且你不必调用任何OnPropertyChange。并且你不想以任何方式通知a,因为现在你试图告诉ui Thingies是一个新对象并且不是真的,只有它的内容发生了变化。 这不起作用你必须向我们展示你的XAML代码。