Каков наилучший / самый простой способ представить коллекцию RIA Services в виде списка страниц моделей ViewModel в Silverlight? - PullRequest
0 голосов
/ 04 октября 2011

В Silverlight 4 (или более поздней версии) я хочу иметь модель представления, которая предоставляет доступный для просмотра список моделей представлений, которые выводятся из списка элементов с возможностью просмотра, которые лениво извлекаются из служб RIA.

ДляПримером здесь может служить код модели / view:

    // 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, является «Реактивным», то есть при изменении базового списка сущностей список модели представления будет автоматически отражать изменения, связанные с изменением свойств монитора и событиями изменения коллекции, на основе выражения, которое я использую для создания модели представления.list.

Однако я не верю (и могу ошибаться), что этот список Obtics будет работать правильно с Silverlight DataGrid / DataForm / и т.д.контролирует, потому что он не действует как доступная для просмотра коллекция.

Итак, мой вопрос: каков наилучший способ сделать это?

Я посмотрел на кучу библиотек моделей представлений (Prism, SimpleMVVM, Caliburn.Micro и RIAServices.ViewModel), и ни один из них, похоже, не поддерживает этот сценарий.

1 Ответ

0 голосов
/ 07 ноября 2011

Вы можете использовать класс DomainCollectionView RIA Services Toolkit.

См. http://blogs.msdn.com/b/kylemc/archive/2010/12/02/introducing-an-mvvm-friendly-domaindatasource-the-domaincollectionview.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...