在Silverlight 4(或更高版本)中,我希望有一个视图模型,它公开了一个可分页的视图模型列表,这些视图模型是从可从RIA服务中懒惰检索的可分页实体列表派生的。
例如,这里可能是代码隐藏/视图模型:
// Entities: Thousands exist, so they will be loaded lazily using the DataGrid's paging features.
private EntitySet<ExampleEntity> Entities { get; set; }
// View models: This list is a view of the Entities list.
public IList<ExampleEntityViewModel> EntityViewModels {
get {
return CreateDerivedCollection(this.Entities, this.CreateViewModel);
}
}
// This method will be called whenever Entities has a new item added.
public ExampleEntityViewModel CreateViewModel(ExampleEntity entity) {
return new ExampleEntityViewModel(entity);
}
这里可能是一些Silverlight 4 XAML:
<sdk:DataGrid ItemsSource="{Binding Path=EntityViewModels}" />
<sdk:DataForm ItemsSource="{Binding Path=EntityViewModels}" />
如果我不关心分页,我会使用名为Obtics的库来创建属性。 Obtics很好,因为Obtics创建的列表是“Reactive”,这意味着当底层实体列表发生更改时,视图模型列表将根据我用于创建视图模型的表达式,通过监视属性更改和集合更改事件自动反映更改列表。
但是,我不相信(我可能错了)这个Obtics列表可以正常使用Silverlight DataGrid / DataForm / etc。控件,因为它不像可分页的集合。
所以我的问题是:实现这个目标的最佳方法是什么?
我查看过一堆视图模型库(Prism,SimpleMVVM,Caliburn.Micro和RIAServices.ViewModel),但它们似乎都不支持这种情况。
答案 0 :(得分:0)
您可以使用RIA Services Toolkit的DomainCollectionView类。