Я пытаюсь добавить двусторонний (вверх и вниз) бесконечный список прокрутки в мое приложение WP8. Поэтому, когда список достигает вершины, мы загружаем «меньшие» элементы из веб-API, а когда список достигает конца, мы загружаем «большие» элементы из веб-API.
Моя первоначальная идея состояла в том, чтобы использовать список, подобный этому, верхний и нижний колонтитулы устанавливаются поверх экрана.
<phone:LongListSelector x:Name="List" ItemsSource="{Binding Routes}" Margin="0,0,0,-90" ItemRealized="listBox_ItemRealized">
<phone:LongListSelector.ListHeader>
<Grid Margin="12,-90,12,30" Height="60" VerticalAlignment="Top">
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Load more" />
</StackPanel>
</Grid>
</phone:LongListSelector.ListHeader>
<phone:LongListSelector.ListFooter>
<Grid Margin="12,30,12,0" Height="60" VerticalAlignment="Bottom">
<StackPanel VerticalAlignment="Center">
<TextBlock Text="Load more" />
</StackPanel>
</Grid>
</phone:LongListSelector.ListFooter>
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Margin="12,8" Background="#FFd3dae8" Width="456">
<TextBlock Text="{Binding item}" />
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
void listBox_ItemRealized(object sender, ItemRealizationEventArgs e)
{
if (e.ItemKind == LongListSelectorItemKind.ListHeader)
{
// Get smaller items
}
else if (e.ItemKind == LongListSelectorItemKind.ListFooter)
{
// Get bigger items
}
}
Затем я могу использовать ListBox.ItemRealized, чтобы проверить, когда реализуется верхний или нижний колонтитул, и загрузить дополнительные данные на основе этого.
Проблема в том, что я могу получить только 5 элементов из веб-апи одновременно, поэтому изначально список содержит 5 элементов. Это нормально, список выходит на экран, так как мой шаблон элемента списка на самом деле довольно большой, и на самом деле не видны ни нижний колонтитул, ни верхний колонтитул.
Но событие ItemRealized вызывается для каждого элемента, даже если они на самом деле не видны. Я думаю, проблема в том, что LongListSelector фактически загружает 10 (?) Элементов одновременно и поднимает ItemRealized для всех из них?
Существуют ли какие-либо другие методы, которые я могу использовать для достижения такой функциональности?