none
ListBox 如何快速更换数据源 RRS feed

  • 问题

  • ListBox原本绑定1k以上数据源,现在需要对数据源进行更新,发现数据源的重新绑定时间time>2s,请问将绑定时间压缩,谢谢。

    xmln:

    <ListBox ItemsSource="{Binding SourceList}" DisplayMemberPath="{Binding DisplayName}" />

    cs:

    ///InitSource

    ObservableCollection<Record>SourceList=GetSource();///SourceList.Count>1000;

    ///ReBinding

    SourceList=Search();/// the count of search resule >1000 此时页面加载时间过长,疑为ListBox移除Item所致 

     


    2011年8月30日 9:58

答案

  • 在源数据上进行操作时,如果大量的删除数据,依旧会卡

    界面虚拟化效果也一样 

    用的是mvvm 控件不写控制代码

    自己写了个分页的listbox

    2011年9月2日 9:43

全部回复

  • 通过设置Binding对象的UpdateSourceTrigger 来确定执行时间.


    2011年8月30日 12:01
  • 你好,

    UpdateSourceTrigger 改变的是更新数据源的时机,对这个情况并不能有帮助。

    建议你考虑一下几点:

    如果可能的话,尽量对原有的SourceList进行添加删除,而不要重新创建一个新的集合。

    应用界面虚拟化。

    <ListBox VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"/>
    

    如果你的ListBox需要支持多选,并且有非常多的项被选中的话,先调用ListBox.UnselectAll()清楚选中状态。


    Min Zhu [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年8月31日 9:37
    版主
  • 在源数据上进行操作时,如果大量的删除数据,依旧会卡

    界面虚拟化效果也一样 

    用的是mvvm 控件不写控制代码

    自己写了个分页的listbox

    2011年9月2日 9:43