silverlight - 在列表框的末尾添加加载更多按钮而不会丢失虚拟化?

标签 silverlight windows-phone-7 listbox windows-phone-7.1

我知道通过编辑 ListBox像这样的默认样式,我可以有一个 ButtonListBox 的最后.

<ScrollViewer x:Name="ScrollViewer" ...> 
    <StackPanel>
        <ItemsPresenter />
        <Button />
    </StackPanel>
</ScrollViewer> 

但是,这样做会破坏 ListBox的虚拟化和渲染时间变得非常长。

我能想到的只有
  • 创建一个虚拟项目并将其添加到我的项目集合的末尾
    View 模型,并有一个 Visibility名为 的虚拟对象中的属性ButtonGridVisibility 并将其设置为 Visibility.Visible .
  • 在我的 ListBoxItemTemplate ,有两个Grids .一台显示器
    正常的项目布局,另一个显示加载更多Button .
    然后切换他们的 Visibility基于 ButtonGridVisibility 属性(property)。

  • 这可能有效,但我只是想知道是否有更简单/更好的方法?

    最佳答案

    我知道这是一篇旧帖子,但以防万一有人偶然发现:

    有一个 LongListSelector 控件 available out of the box in WP8或作为 Windows Phone Toolkit 的一部分对于 WP7,它非常巧妙地支持这种情况。如果要在最后一项之后(或第一项之前)添加特定内容,只需设置控件的 ListFooter 或 ListHeader 即可。您可以将任何内容放入其中,此内容将与其余项目一起滚动。

    所以对于 WP7,这看起来像这样:

    <toolkit:LongListSelector ItemsSource="{Binding Items}">
        <toolkit:LongListSelector.ListFooter>
            <Grid>
                <Button />
            </Grid>
        </toolkit:LongListSelector.ListFooter>
    </toolkit:LongListSelector>
    

    哪里toolkitxmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"

    关于silverlight - 在列表框的末尾添加加载更多按钮而不会丢失虚拟化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8489508/

    相关文章:

    Silverlight 编程数据绑定(bind)到页面标题属性未更新

    Silverlight 4 数据模板数据类型

    c# - 如何通过代码将复选框添加到滚动查看器?

    c# - 在 WP7 项目中找不到 HttpWebRequest.GetResponse()

    选择多个值时列表框的 JavaScript 验证

    multithreading - Silverlight - 一次将应用程序限制为一个 WCF 调用

    c# - 编辑 ListBox 容器样式

    performance - 制作Windows Phone 7应用程序时有哪些性能提示?

    c# - MenuItem.IsEnabled 绑定(bind)到是否在列表框中选择了某些内容,但它不会更新

    c# - 从网站动态生成列表框数据,windows phone 7