2015-04-12 35 views
1

我已經閱讀了有關如何在滾動到列表視圖底部時執行遞增加載的文章,但是當滾動到列表頂部時如何實現延遲加載。當用戶到達頂部時,我想添加更多項目到列表頂部。有什麼辦法可以做到這一點嗎?ListView WP8中的增量加載

回答

4

找到了解決方案。旋轉兩個控件。

對於EG->

<ListView x:Name="GridViewMain" IncrementalLoadingThreshold="2" RenderTransformOrigin="0.5,0.5"> <ListView.RenderTransform> <RotateTransform Angle="180"></RotateTransform> </ListView.RenderTransform> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> <Setter Property="VerticalContentAlignment" Value="Stretch"/> </Style> </ListView.ItemContainerStyle> <ListView.Resources> <DataTemplate x:Key="DataTemplateGridViewMain"> <Grid HorizontalAlignment="Stretch" Background="#FF7C1A9B" RenderTransformOrigin="0.5,0.5"> <Grid.RenderTransform> <RotateTransform Angle="180"/> </Grid.RenderTransform> <TextBlock HorizontalAlignment="Left" Text="{Binding}" VerticalAlignment="Center" FontSize="20" FontFamily="Tempus Sans ITC" /> </Grid> </DataTemplate> </ListView.Resources> <ListView.ItemTemplate> <StaticResource ResourceKey="DataTemplateGridViewMain" /> </ListView.ItemTemplate> </ListView>

爲我工作。

1

沒有內置的解決方案。

下面是一個例子,它檢查ListViews的滾動位置,並在頂部添加其他項目。

// Attach to the view changed event 
_scrollViewer = listview.GetFirstDescendantOfType<ScrollViewer>(); 
if (_scrollViewer != null) 
{ 
    _scrollViewer.ViewChanged += OnViewChanged; 
} 

而處理程序。

private void OnViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
{ 
    // If scrollviewer is scrolled up 
    if (_scrollViewer.VerticalOffset < 150) 
    { 
     // Start loading new items... 
    } 
} 

小心輕放:

當在上面添加項目,滾動位置會發生變化。

該檢查非常簡單,只有當scrollviewer可以實際滾動時纔會起作用。

+0

如何處理滾動位置的變化? –

+0

你究竟是什麼意思?有scrollviewer.ChangeView()。 –

+0

從下到上滾動時,添加項目時,滾動突然跳到底部。任何方式來防止這種情況? –