IncrementalLoadingCollection 和带有自定义构造函数的 ViewModel
IncrementalLoadingCollection and ViewModel with custom constructor
我有通过构造函数 (Prism) 注入的 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);
}
}
但是行 Tenders = new 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 与自定义构造函数一起使用?
如果您调用 new IncrementalLoadingCollection<MainPageViewModel, Tender>(10)
,那么该集合将尝试创建一个 MainPageViewModel
的新实例,只有当它具有无参数构造函数时才有效(这显然不是您的情况).解决方法是提供您自己的 MainPageViewModel
:
实例
public MainPageViewModel(IUnityContainer container, IDataService dataService)
{
...
var Tenders = new IncrementalLoadingCollection<MainPageViewModel, Tender>(this, 10);
}
我有通过构造函数 (Prism) 注入的 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);
}
}
但是行 Tenders = new 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 与自定义构造函数一起使用?
如果您调用 new IncrementalLoadingCollection<MainPageViewModel, Tender>(10)
,那么该集合将尝试创建一个 MainPageViewModel
的新实例,只有当它具有无参数构造函数时才有效(这显然不是您的情况).解决方法是提供您自己的 MainPageViewModel
:
public MainPageViewModel(IUnityContainer container, IDataService dataService)
{
...
var Tenders = new IncrementalLoadingCollection<MainPageViewModel, Tender>(this, 10);
}