我試圖添加兩種方式(向上&下)無限滾動列表到我的WP8應用程序。所以當列表頂部時,我們加載web api中的「小」項,當列表命中結束時,我們加載web api中的「更大」項。更精確的替代LongListSelector.ItemRealized
我最初的想法是使用這樣的列表,頁眉和頁腳設置在屏幕上。
<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檢查時頁眉或頁腳被實現和加載基於更多的數據。
問題是我一次只能從web api獲取5個項目,所以最初列表包含5個項目。沒關係,該列表在屏幕上顯示,因爲我的列表項目模板實際上相當大,並且實際上看不到頁腳或標題。
但是,爲每個元素引發ItemRealized事件,即使它們實際上不可見。我認爲問題是LongListSelector實際上一次加載10個(?)項目並且爲它們引發ItemRealized?
是否有任何其他技術可以用來實現這種功能?
在這種情況下,通常列表中的5項足夠用戶使用。但是,如果用戶可以向上/向下滾動以獲得更多結果,那將會很棒。從我的手中,我一次只能從服務器獲得五件物品。當然,我可以提出多個請求來獲得更多的項目... – devha
我真正想要的是解決方案,我可以準確地檢查列表(Listbox或longlistselector)頂部或底部的位置。然後,我可以提出網絡請求並獲得更多項目。 – devha
你可以像[本文]中所做的那樣掛鉤到ViewportControl中(http://visuallocated.com/post/2014/01/16/Synching-the-scroll-position-of-two-LongListSelectors.aspx) –