zoukankan      html  css  js  c++  java
  • Windows Phone 7 ListBox 滚动到最后一条的问题 ( ListBox scrolling to the bottom )

    最近做一个windows phone 7 聊天软件的项目,聊天列表用的是Listbox,DataTemplate用了十几种模板,而且其中的有的模板高度是随着聊天的内容长度变化的,这就导致了,ListBox 滚动时出现了很多奇怪的现象:滚动不到最后一条,卡在某一条不能滚动,屏幕晃动等。从网上找了很多关于ListBox的内容,这条最有帮助:  ListBox performance,是微软的开发人员讲述的ListBox使用规范,这其中重点强调了要使ListBox中的DataTemplate要有固定高度。但这无法满足我的DataTemplate对变高的需求。在查看中,发现ListBox 默认用到了虚拟化VirtualizingStackPanel (VSP),试着去掉这个虚拟化改用stackpanel后,发现问题一下解决了。

    下面是代码,加到ListBox 中就好了。

      <ListBox.ItemsPanel>
                 <ItemsPanelTemplate>
                           <StackPanel>
                             </StackPanel>
                 </ItemsPanelTemplate>
       </ListBox.ItemsPanel>
    

      VirtualizingStackPanel (VSP)虚拟化虽然能提高显示性能,但是在变高DataTemplate情况下效果很差,去除后,滚动到ListBox底部变得很美观,最后一项也不会被遮挡半边了。

    当然要想让ListBox滚动到底部,还是比较容易的,直接调用ListBox自带的Api就好了:

    this.ListBox.UpdateLayout();
    if (this.ListBox.Items.Count > 0)
    this.ListBox.ScrollIntoView(this.ListBox.Items.ElementAt(this.ListBox.Items.Count - 1));
    this.ListBox.UpdateLayout();

     


    作者:月食之后
    出处:http://www.cnblogs.com/aftereclipse/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    HBase常用Shell命令
    在Eclipse中创建Maven多模块项目
    在IntelliJ IDEA中创建Maven多模块项目
    在IntelliJ IDEA中创建Web项目
    【Python】如何安装easy_install?
    RabbitMQ从入门到精通
    Erlang语言入门
    Eclipse背景颜色改动
    导出Excel1
    计算机概述
  • 原文地址:https://www.cnblogs.com/aftereclipse/p/2566142.html
Copyright © 2011-2022 走看看