我知道通过编辑ListBox
这样的默认样式,我可以在Button
的最后添加ListBox
。
<ScrollViewer x:Name="ScrollViewer" ...>
<StackPanel>
<ItemsPresenter />
<Button />
</StackPanel>
</ScrollViewer>
然而,这样做会破坏ListBox
的虚拟化,渲染时间会变得很长。
我能想到的只是,
Visibility
属性,并将其设置为Visibility.Visible
。ListBox
ItemTemplate
中,有两个Grids
。一显示
正常的项目布局,另一个显示加载更多 Button
。
然后根据 ButtonGridVisibility 属性切换Visibility
。这可能会有效,但我只是想知道是否有更简单/更好的方法?
答案 0 :(得分:3)
我知道这是一个老帖子,但万一有些人偶然发现了这个:
有一个LongListSelector控件available out of the box in WP8或作为WP7的Windows Phone Toolkit的一部分,它非常巧妙地支持这种情况。如果要在最后一个项目之后(或在第一个项目之前)添加特定内容,则只需设置控件的ListFooter或ListHeader即可。您可以在其中放置任何内容,这些内容将与其他项目一起滚动。
因此,对于WP7,这将是这样的:
<toolkit:LongListSelector ItemsSource="{Binding Items}">
<toolkit:LongListSelector.ListFooter>
<Grid>
<Button />
</Grid>
</toolkit:LongListSelector.ListFooter>
</toolkit:LongListSelector>
其中toolkit
为xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
答案 1 :(得分:1)
现在有很多额外的功能可以帮助解决这个问题。其中之一是在ScrollViewer上增加了“HorizontalCompression”和“VerticalCompression”视觉状态组,增加了额外的视觉状态。通过使用这些并挂钩CurrentStateChanging
事件,您可以根据需要加载更多项目。
有关如何实现此问题的详细信息,请参阅Silverlight for Windows Phone Performance Team Blog.