GridView水平滚动,屏幕最多可显示10个项目。
但是,当页面加载时,GridView会变得疯狂,并要求在LoadMoreItemAsync
中加载2475个项目。
我限制每次调用的获取功能,每次返回10个项目。它只是反复调用LoadMoreItemAsync
。
现在基本上当我甚至没有滚动GridView时,它只是加载它自己。
这是我使用的GridView
<GridView ItemsSource="{Binding Data}" IncrementalLoadingThreshold="0">
<GridView.ItemTemplate>
<DataTemplate>
<Image
Margin="5"
Stretch="UniformToFill"
Source="{Binding Banner}"
/>
</DataTemplate>
</GridView.ItemTemplate>
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsWrapGrid MaximumRowsOrColumns="5" ItemWidth="192" ItemHeight="250" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
</GridView>
这里是
背后的代码public IAsyncOperation<LoadMoreItemsResult> LoadMoreItemsAsync( uint count )
{
Logger.Log( ID, string.Format( "Requesting to load {0} items", count ) );
return Task.Run( async () =>
{
TaskCompletionSource<uint> ItemsLoaded = new TaskCompletionSource<uint>();
ConnectedLoader.Connector = ( BookItem[] b ) =>
{
IEnumerable<T> Converted = Convert( b );
uint i = 0;
foreach ( T a in Converted )
{
Add( a ); i++;
}
ItemsLoaded.SetResult( i );
};
ConnectedLoader.NextPage();
return new LoadMoreItemsResult() { Count = await ItemsLoaded.Task };
} ).AsAsyncOperation();
}
那么如何告诉GridView不要加载这么多项呢?
答案 0 :(得分:0)
我明白了。问题似乎是我将GridView放在集线器中。这导致GridView不知道自集线器部分扩展以来它的限制在哪里。
我在这里问了一个类似的问题: ISupportIncrementalLoading inside ScrollViewer not supported?
但目前在那里没有正确答案。所以我保留这里,并希望有人能提供另一种解决方案。