【问题标题】:Bind Combobox with huge data in WPF在 WPF 中将 Combobox 与大量数据绑定
【发布时间】:2011-09-30 10:27:53
【问题描述】:

我正在尝试将组合框与自定义对象列表绑定。我的对象列表有大约 15K 条记录,单击组合框后组合框需要很长时间才能显示数据。

下面是代码:

<ComboBox Height="23" Name="comboBox1" Width="120" DisplayMemberPath="EmpName" SelectedValue="EmpID" VirtualizingStackPanel.IsVirtualizing="True" VirtualizingStackPanel.VirtualizationMode="Recycling"/>

后面的代码:

List<EmployeeBE> allEmployee = new List<EmployeeBE>();
allEmployee = EmployeeBO.GetEmployeeAll();
 comboBox1.ItemsSource = allEmployee;

allEmployee 有大约 15K 的记录。 任何人都可以建议我如何提高我的组合框性能?

【问题讨论】:

  • 考虑不使用 ComboBox.. 带有 15k 记录的 ComboBox 很难导航!

标签: wpf performance combobox large-data


【解决方案1】:

这是糟糕的 UI 设计:没有用户会阅读 15K 条记录。

您可以通过允许用户在显示结果之前输入一些过滤条件来提高性能,例如,使用 AutoCompleteBox 代替 ComboBox。

【讨论】:

  • 同意,AutoCompleteBox 甚至是适当的ListBox 启用文本搜索绝对是解决方案
【解决方案2】:

您可以按照此处所述尝试VirtualizingStackPanel - http://vbcity.com/blogs/xtab/archive/2009/12/15/wpf-using-a-virtualizingstackpanel-to-improve-combobox-performance.aspx

正如其他人所说,您真的想重新设计您的 UI,因为 ComboBox 不适合 15k 条记录。

【讨论】:

    【解决方案3】:

    尝试将VirtualizingStackPanel 用作ItemsPanel 用于ComboBox。

    <ItemsPanelTemplate x:Key="ComboBoxItemsPanelTemplate"> 
       <VirtualizingStackPanel/> 
    </ItemsPanelTemplate>
    
    <ComboBox ItemsPanel="{StaticResource ItemsTemplate}"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      • 2011-05-06
      • 2019-06-23
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      相关资源
      最近更新 更多