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 設計の悪さです。ユーザーは 15,000 レコードを読み取ることはありません。

ComboBox の代わりにAutoCompleteBoxを使用するなど、ユーザーが結果を表示する前にいくつかのフィルター条件を入力できるようにすることで、パフォーマンスを向上させることができます。

于 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

他の人が言っているように、ComboBoxは15kレコードには適していないため、UIを再考する必要があります。

于 2011-07-07T12:45:00.473 に答える
0

としてを使用してみVirtualizingStackPanelItemsPanelくださいComboBox

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

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