2010-01-13 48 views
1

我想了解MVVM模式,并且拿了一个示例程序来处理。该模型是一个C#.net库,在查询时会返回一个IList<INote>对象。我希望我的视图能够通过数据绑定添加/编辑/删除此集合中的项目。但我不知道如何从MVVM开始。请帮助我。将IList绑定到使用MVVM的列表控件

模型公开检索IList<INote> objecs接口, 查看具有显示将数据添加到IList<INote>IList<INote>内容和其他几个控件的列表框。

回答

3

将您的列表框绑定到ObservableCollection<T>,它会立即更新,每当您添加或删除的东西从ObservableCollection<T>

这个ObservableCollection<T>通常应该是你的ViewModel的属性。

如果您的模型中的IList属性不可观察(并且您无法控制它),则必须编写代码以在ViewModel中同步它。这些都是当时的建筑问题。我觉得在这方面最干净的选择是实际使用ReadOnlyObservableCollection<T>,并使用您的存储库添加/删除项目并进行相应的同步。

+0

有没有办法自动执行此同步?就像我们将ObservableCollection绑定到控件一样,有没有办法将我的库中的IList绑定到我的ViewModel中的ObservableCollection ? – sudarsanyes 2010-01-13 18:41:04

+0

似乎你不能像普通的日子那样将一个正常的集合包装到一个ObservableCollection中。 ;-) 蛮力方法不会很复杂,只需清除列表并再次从模型中读取即可。 更优雅的方法将是一个自定义可观察集合类,它利用了一些类似HashSet的算法。 – herzmeister 2010-01-13 19:04:27

1

我的blog postDelegateCommand应该给你一个很好的接地。

相关问题