2011-10-04 2 views
0

Silverlight 4 이상에서는 RIA 서비스에서 느리게 검색되는 페이지 가능 목록의 엔터티 목록에서 파생 된보기 모드 목록을 제공하는보기 모델이 필요합니다. 내가 페이징에 대한 우려가 아니었다면 나 ',RIA Services 컬렉션을 Silverlight에서 페이지 뷰 목록으로 노출시키는 가장 쉽고/간편한 방법은 무엇입니까?

<sdk:DataGrid ItemsSource="{Binding Path=EntityViewModels}" /> 
    <sdk:DataForm ItemsSource="{Binding Path=EntityViewModels}" /> 

: 여기/뷰 모델 뒤에 코드가 될 수 예를 들어

: 여기

// 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); 
    } 

과는 약간의 실버 라이트 4 XAML 될 수있다 d Obtics이라는 라이브러리를 사용하여 속성을 만듭니다. Obtics가 만드는 목록은 "Reactive"입니다. 즉, 기본 엔터티 목록이 변경 될 때 뷰 모델 목록은 뷰 모델을 만드는 데 사용하는 식을 기반으로 한 monitory 속성 변경 및 컬렉션 변경 이벤트에 의한 변경 내용을 자동으로 반영합니다. 명부.

그러나이 Obtics 목록이 Silverlight DataGrid/DataForm/등에서 올바르게 작동 할 것이라고 나는 믿지 않습니다. 컨트롤은 페이지 가능한 컬렉션처럼 작동하지 않기 때문에 컨트롤입니다.

내 질문은 : 이것을 달성하는 가장 좋은 방법은 무엇입니까?

뷰 모델 라이브러리 (Prism, SimpleMVVM, Caliburn.Micro 및 RIAServices.ViewModel)를 살펴 보았지만이 시나리오를 지원하지 않는 것으로 나타났습니다.

답변

0

RIA Services Toolkit의 DomainCollectionView 클래스를 사용할 수 있습니다.

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

+0

불행하게도,이보기 모델의 컬렉션을 노출 할 수없는 경우를 참조하십시오. DomainCollectionView 코드는 블로그의 코드를 기반으로 작성되었지만 내 필요에 맞게 복사 및 수정할 수 있습니다. 사실 내가 끝내었던 것입니다. –