2016-12-04 9 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); 
    } 
} 

Но line Tenders = new IncrementalLoadingCollection (10); throw 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

Это работа, спасибо! –