我的应用程序页面(这是一个项目页面模板)中有一个列表视图(用于捕捉状态)和一个网格视图(用于正常状态),它们都绑定到实现ISupportIncrementalLoading
接口的集合。以下是实现的方法:
public HasMoreItemsDelegate MoreItemsExist { get; set; }
public LoadMoreItemsDelegate<T> ItemsLoadAsync { get; set; }
public bool HasMoreItems
{
get
{
return this.MoreItemsExist();
}
}
private bool isLoading;
public bool IsLoading
{
get
{
return this.isLoading;
}
private set
{
this.isLoading = value;
this.OnPropertyChanged("IsLoading");
}
}
public Windows.Foundation.IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync(uint count)
{
if (this.IsLoading)
{
throw new InvalidOperationException("Only one operation in flight at a time");
}
this.IsLoading = true;
return AsyncInfo.Run((c) => LoadMoreItemsAsync(c, count));
}
async Task<LoadMoreItemsResult> LoadMoreItemsAsync(CancellationToken c, uint count)
{
try
{
IEnumerable<T> itemsToAdd = await ItemsLoadAsync(c, count);
foreach (var item in itemsToAdd)
{
this.Add(item);
}
return new LoadMoreItemsResult { Count = (uint)itemsToAdd.Count() };
}
finally
{
this.IsLoading = false;
}
}
我遇到的问题是:当应用程序处于快照模式并且我使用列表视图和网格视图导航到页面时,两个视图都尝试调用LoadMoreItemsAsync
并输入异常子句,而在正常(全屏)模式下,只有网格视图调用该方法,而列表视图没有。