#c# #wpf #listbox
#c# #wpf #список
Вопрос:
Мне нужно отобразить большой объем данных (тысячи элементов) в ListBox, однако это занимает некоторое время, и пользовательский интерфейс не реагирует, пока все элементы не будут отображены в ListBox.
ItemsSource списка привязан к CollectionView.
Я знаю преимущества использования VirtualizingStackPanel, но я настаиваю на использовании WrapPanel.
Я поискал в Интернете и нашел несколько VirtualizedWrapPanels, но у них та же проблема, которая заключается в том, что они не позволяют VirtualizingWrapPanel увеличиваться до любого размера, который ему нравится, и я должен установить для них ширину и высоту.
Теперь мне нужно знать, какие еще варианты существуют для выполнения этой работы? Что я могу сделать, чтобы список загружался и отображал этот большой объем быстро.
Пожалуйста, дайте мне знать, если я не объяснил свою проблему четко. Любая помощь приветствуется. Заранее спасибо.
Редактировать
Это соответствующий код
public ObservableCollection<T> Items
{
get { return _items; }
set
{
if (_items == value)
return;
_items = value;
OnPropertyChanged(() => Items);
}
}
Я создаю экземпляр ObservableColelction в методе loadData ViewModel
_items = _service.Select();
и экземпляр CollectionView создается таким образом
ICollectionView cv = new CollectionViewSource() { Source = Items }.View;
и xaml-код списка
<ListBox
x:Name="Items"
ItemsSource="{Binding CollectionView}"
Padding="10,10,10,10"
SelectionMode="Single"
VerticalAlignment="Top"
IsSynchronizedWithCurrentItem="True">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical" Height="480" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Комментарии:
1. Опубликуйте соответствующий код.
3. Я обновил сообщение соответствующим кодом @HighCodr
4. Я использовал VirtualizingWrapPanel @Sinatr, однако он возвращает исключение «не должен возвращать PositiveInfinity в качестве желаемого размера».
Ответ №1:
Я не уверен, применимо ли это или вы ищете это, однако виртуализация данных — это еще одно решение, которое вы можете рассмотреть. есть несколько очень хороших сообщений, описывающих это. эти 2 блога / поста кажутся очень хорошими. Пожалуйста, взгляните сюда[http://www.codeproject.com/Articles/34405/WPF-Data-Virtualization ] и здесь[http://www.zagstudio.com/blog/498#.U7a6OvldV1F ].