2014-02-05 2 views
0

Я новичок в приложении WPF. Я создал приложение, которое подключается к онлайн-базе данных, что означает, что я размещаю свою базу данных на сервере хостинга (SQL Server) и моем приложении WPF, работающем локально.Как повысить производительность загрузки большого количества записей в раскрывающийся список WPF?

У меня более 1000 записей элемента, когда я открываю приложение, и эта запись будет загружена в выпадающий список. Проблема заключается в том, что они тратят более 5 минут на загрузку этих записей. Кто-нибудь знает какой-либо другой способ сделать это быстрее?

+0

Что вы делали до сих пор? Какая часть медленная? [Сервер] (http://technet.microsoft.com/en-us/library/ms181091.aspx)? [Клиент] (http://msdn.microsoft.com/en-us/library/aa969767 (v = vs.110) .aspx)? –

+0

Является ли это WPF медленным или вашей базы данных? Я подозреваю, что это последнее, поэтому вам нужно улучшить эту сторону. Чтобы протестировать, попробуйте загрузить 10 и 100 записей вместо всех 1000 и посмотреть, как это влияет на производительность. –

+0

Замечание: 1000 элементов в combobox/dropdown/list обычно непригодны для использования с точки зрения UI ... Убедитесь, что вам действительно нужно, чтобы все они были загружены напрямую (и если у вас нет несвязанного количества элементов). –

ответ

5

ComboBox не имеет UI Virtualization включен по умолчанию.

Причина в том, что ComboBox на самом деле не предназначен для отображения большого количества предметов.

Чтобы включить ее, изменить ItemsPanel:

<ComboBox ...> 
    <ComboBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel /> 
     </ItemsPanelTemplate> 
    </ComboBox.ItemsPanel> 
</ComboBox> 

Имейте в виду, однако, что показывает более, чем даже 20 пунктов в ComboBox приведет к очень болезненным User Experience.

Вы должны действительно рассмотреть возможность изменения на ListBox или другой элемент пользовательского интерфейса, более подходящий для отображения больших списков элементов.

Смежные вопросы