2016-12-04 7 views
0

私はViewModelをコンストラクタ(Prism)を介してインジェクションしています。カスタムコンストラクタ付きのIncrementalLoadingCollectionとViewModel

public class MainPageViewModel : ViewModelBase, IIncrementalSource<Tender> 
{ 
    public async Task<IEnumerable<Tender>> GetPagedItemsAsync(int pageIndex, int pageSize, CancellationToken cancellationToken = default(CancellationToken)) 
    { 
     TendersRequest.Offset = pageIndex; 
     TendersRequest.Count = pageSize; 
     return await _dataService.GetTenders(TendersRequest); 
    } 


    public MainPageViewModel(IUnityContainer container, IDataService dataService) 
    { 
     ... 

     var Tenders = new IncrementalLoadingCollection<MainPageViewModel, Tender>(10); 
    } 
} 

しかし、ラインテンダー=新しいIncrementalLoadingCollection(10); System.InvalidOperationExceptionをスローします。

An exception of type 'System.InvalidOperationException' occurred in Microsoft.Toolkit.Uwp.dll but was not handled in user code 

Additional information: TSource must have a parameterless constructor 

私は間違っていますか? カスタムコンストラクタでIncrementalLoadingCollectionを使用するには?

答えて

1

new IncrementalLoadingCollection<MainPageViewModel, Tender>(10)を呼び出すと、コレクションにパラメータがないコンストラクタがある場合にのみ有効なMainPageViewModelという新しいインスタンスが作成されます(これは当然のことです)。回避策は、MainPageViewModelの独自のインスタンスを提供することです:

public MainPageViewModel(IUnityContainer container, IDataService dataService) 
{ 
    ... 

    var Tenders = new IncrementalLoadingCollection<MainPageViewModel, Tender>(this, 10); 
} 
+0

それは、ありがとうございます! –

関連する問題