【问题标题】:What is the best/easiest way to expose a RIA Services collection as a pageable list of ViewModels in Silverlight?在 Silverlight 中将 RIA 服务集合公开为可分页的 ViewModel 列表的最佳/最简单方法是什么?
【发布时间】:2011-10-04 15:23:28
【问题描述】:

在 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 创建的列表是“反应式”的,这意味着当底层实体列表发生变化时,视图模型列表将自动反映基于我用来创建视图模型的表达式的监视属性更改和集合更改事件的更改列表。

但是,我不相信(我可能是错的)这个 Obtics 列表可以与 Silverlight DataGrid/DataForm/etc 一起正常工作。控件,因为它不像可分页集合。

所以我的问题是:最好的方法是什么?

我查看了一堆视图模型库(Prism、SimpleMVVM、Caliburn.Micro 和 RIAServices.ViewModel),但似乎没有一个支持这种情况。

【问题讨论】:

    标签: silverlight mvvm ria wcf-ria-services


    【解决方案1】:

    【讨论】:

    • 不幸的是,这不能公开视图模型的集合。尽管 DomainCollectionView 代码是基于博客中的代码,但它可以被复制和修改以满足我的需要。这实际上是我最终做的。
    猜你喜欢
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2018-02-09
    相关资源
    最近更新 更多