Механизм загрузки и выгрузки элементов списка в WPF

#c# #wpf #xaml #c#-4.0 #listbox

#c# #wpf #xaml #c #-4.0 #список

Вопрос:

Я хочу создать приложение в WPF с использованием C #, в котором я хочу внедрить механизм загрузки и выгрузки элементов списка в определенной видимой области. Короче говоря, в Listbox присутствует множество элементов, при прокрутке пользователем вниз или вверх внутри видимой области видимые элементы будут занимать только память или будут загружены, а остальные элементы, которые не видны, не будут занимать никакой памяти или будут выгружены.

У меня нет никакой базовой идеи о том, как это сделать.Не мог бы кто-нибудь, пожалуйста, сообщить мне, как это сделать, и какими должны быть основные шаги, которые я должен предпринять, и какие статьи мне следует просмотреть? Любая подсказка была бы высоко оценена.

Заранее спасибо

Комментарии:

1. Если вы спросите меня, я думаю, что ваш метод хорош, а не невозможен для listbox. Listbox позволяет прокручивать, поэтому вы должны учитывать пользовательский интерфейс listbox. Например, когда вы прокручиваете весь путь вниз, то из-за того, что вы выгружаете невидимые данные и загружаете только видимую часть, что происходит с полосой прокрутки? Теоретически, он перемещается обратно на самый верхний уровень. Вас, как пользователя, это будет раздражать? Но если вы поместите это в виде таблицы и, возможно, введете разбивку на страницы, это было бы намного, намного проще.

2. Я думаю, что вместо того, чтобы устанавливать мою полосу прокрутки максимально верхней, я оставлю полосу прокрутки как есть, и в соответствии с областью окна просмотра ScrollViewer я выберу видимую область и буду загружать и выгружать элементы соответственно.

Ответ №1:

вы можете посмотреть на VirtualMode это один из подходов к управлению загрузкой элементов.

Комментарии:

1. Не могли бы вы, пожалуйста, поделиться каким-либо примером приложения, если у вас есть.

2. @SharpUrBrain по предоставленной мной ссылке уже есть пример кода. если вы хотите иметь рабочий пример, вот один из примеров codeproject: codeproject.com/KB/list/VirtualModeListView.aspx

Ответ №2:

Комментарий выше кажется верным — если вы попытаетесь сделать это во время прокрутки пользователем, то это создаст очень нестабильный пользовательский интерфейс. Как насчет простого добавления опции «больше …» в нижней части списка, если там больше данных?