将RIA Services集合作为Silverlight中的ViewModel可分页列表公开的最佳/最简单方法是什么?

时间:2011-10-04 15:23:29

标签: silverlight mvvm ria wcf-ria-services

在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),但它们似乎都不支持这种情况。

1 个答案:

答案 0 :(得分:0)