将Combobox与WPF中的大量数据绑定

时间:2011-07-07 12:29:09

标签: wpf performance combobox large-data

我正在尝试将combobox与自定义对象列表绑定。我的对象列表有大约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的记录。 任何人都可以建议如何提高我的组合框效果?

3 个答案:

答案 0 :(得分:5)

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

您可以通过允许用户在显示结果之前输入一些过滤条件来改善性能,例如,使用AutoCompleteBox而不是ComboBox。

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

尝试将VirtualizingStackPanel ItemsPanel用作ComboBox

<ItemsPanelTemplate x:Key="ComboBoxItemsPanelTemplate"> 
   <VirtualizingStackPanel/> 
</ItemsPanelTemplate>

<ComboBox ItemsPanel="{StaticResource ItemsTemplate}"/>