3

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

4

3 回答 3

5

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

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

于 2011-07-07T12:39:14.463 回答
4

您可以尝试VirtualizingStackPanel这里描述的 - http://vbcity.com/blogs/xtab/archive/2009/12/15/wpf-using-a-virtualizingstackpanel-to-improve-combobox-performance.aspx

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

于 2011-07-07T12:45:00.473 回答
0

尝试使用VirtualizingStackPanelas ItemsPanelComboBox

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

<ComboBox ItemsPanel="{StaticResource ItemsTemplate}"/>
于 2011-07-07T12:45:24.833 回答