我想了解MVVM模式,并且拿了一个示例程序来处理。该模型是一个C#.net库,在查询时会返回一个IList<INote>
对象。我希望我的视图能够通过数据绑定添加/编辑/删除此集合中的项目。但我不知道如何从MVVM开始。请帮助我。将IList绑定到使用MVVM的列表控件
模型公开检索IList<INote>
objecs接口, 查看具有显示将数据添加到IList<INote>
的IList<INote>
内容和其他几个控件的列表框。
我想了解MVVM模式,并且拿了一个示例程序来处理。该模型是一个C#.net库,在查询时会返回一个IList<INote>
对象。我希望我的视图能够通过数据绑定添加/编辑/删除此集合中的项目。但我不知道如何从MVVM开始。请帮助我。将IList绑定到使用MVVM的列表控件
模型公开检索IList<INote>
objecs接口, 查看具有显示将数据添加到IList<INote>
的IList<INote>
内容和其他几个控件的列表框。
将您的列表框绑定到ObservableCollection<T>
,它会立即更新,每当您添加或删除的东西从ObservableCollection<T>
。
这个ObservableCollection<T>
通常应该是你的ViewModel的属性。
如果您的模型中的IList
属性不可观察(并且您无法控制它),则必须编写代码以在ViewModel中同步它。这些都是当时的建筑问题。我觉得在这方面最干净的选择是实际使用ReadOnlyObservableCollection<T>
,并使用您的存储库添加/删除项目并进行相应的同步。
我的blog post对DelegateCommand
应该给你一个很好的接地。
我绑定我的列表框到ObservableCollection<Item>
和我添加/删除/修改项目进出这个集合。它工作正常。请在how it works without any INotifyPropertyChanged上查看。请纠正我,如果我错了
有没有办法自动执行此同步?就像我们将ObservableCollection绑定到控件一样,有没有办法将我的库中的IList绑定到我的ViewModel中的ObservableCollection? –
sudarsanyes
2010-01-13 18:41:04
似乎你不能像普通的日子那样将一个正常的集合包装到一个ObservableCollection中。 ;-) 蛮力方法不会很复杂,只需清除列表并再次从模型中读取即可。 更优雅的方法将是一个自定义可观察集合类,它利用了一些类似HashSet的算法。 – herzmeister 2010-01-13 19:04:27