Josh Smith的MVVM标签未被选中

时间:2012-08-07 16:32:10

标签: wpf mvvm observablecollection tabitem

我有一个MVVM应用程序使用像Josh Smith这样的标签。每个TabItem(View)代表一个单独的ViewModel。

在某些视图中,有一些DataGrids绑定到ObservableCollections。到目前为止一切正常。但是当我开始编辑数据网格时,例如通过键入单元格,然后在点击“输入”提交更改之前,切换到另一个选项卡,我无法真正回到上一个选项卡。 Tab内容发生变化,但tabitem仍然未被选中。 我想我不得不停止datagrid的编辑模式,但是我如何在MVVM应用程序中这样做呢? 对于ICollectionViewSource,我知道我可以这样做

  IEditableCollectionView list = (ListCollectionView)this.ItemsView;
  if (list.IsEditingItem) list.CommitEdit();
  if (list.IsAddingNew) list.CommitNew();

但是我不能为ObservableCollection做这个。我是否必须将Binding更改为可观察集合的视图,还是有另一种方式?

1 个答案:

答案 0 :(得分:0)

要自动退出网格的编辑模式,请查看此SO问题:WPF DataGrid - How to automatically exit Edit Mode?

我还建议查看一下绑定在网格中编辑的模型类的IEditableObject接口。这为您提供了一种实现添加数据和编辑的一致方法,以便对对象数据进行更改(或回滚更改)。

IEditableObject要求您实施以下方法:

BeginEdit()
CancelEdit()
EndEdit()

DataGrid已经设计为可以开箱即用IEditableObject个对象。

博士。 WPF在这里写了一篇关于这个接口的好文章:ItemsControl: 'E' is for Editable Collection并且在这篇MSDN文章中有一些使用IEditableObjects和dataGrid的示例代码:How to: Implement Validation with the DataGrid Control