В 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), и ни один из них, похоже, не поддерживает этот сценарий.