我正在尝试将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的记录。 任何人都可以建议如何提高我的组合框效果?
答案 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}"/>