2010-10-22 3 views
0

В Windows Phone ListBox поддерживает виртуализацию данных, это означает, что он может загружать только нужные данные и не все. Peter Torr explains интерфейс, который вам нужно реализовать.Виртуализация данных в Windows Phone 7: Пример

Короткий вариант заключается в том, что вам необходимо создать как метод, возвращающий позицию элемента, так и другой, который возвращает элемент в определенной позиции. Проблема в том, что пример Питера Торра довольно глупый, он просто возвращает объект с индексом в качестве имени.

Мой вопрос: как вы на самом деле реализуете это?

Моя идея - создать один файл, содержащий список (целочисленный) индекс и (целочисленный) идентификатор и файл для каждого объекта, который содержит фактические данные. Это не кажется действительно элегантной идеей, но я не могу придумать ничего лучше, не так ли?

UPDATE

Кажется, что мой вопрос неточен. Когда я говорю, что пример Питера Торра «довольно глупый», я не говорю, что он сделал что-то неправильно; его целью было просто объяснить, какой интерфейс вам нужно реализовать. Практическая реализация будет зависеть от конкретных данных.

Что я спрашиваю, каков выбор для реализации этого? Должен ли я просто помещать данные в веб-службу и запрашивать ее каждый раз (с локальным кешем, конечно), создавать базу данных, создавать файл в хранилище индексов и один для данных? Есть ли решение, достаточно хорошее в каждом случае? Каковы недостатки и недостатки каждого выбора?

+0

FYI, похоже, ваш вопрос заключается не в виртуализации, а в том, как хранить данные на устройстве. Если это так, вы можете перефразировать его. –

ответ

0

В статье, в которую вы ссылаетесь, содержится link to a downloadable project, которая демонстрирует, как реализовать это.

+1

Фактически нет, он показывает, как реализовать необходимый интерфейс, но не как получить фактические данные. В его примере это [] возвращает элемент с бессмысленными данными. В реальном мире вам нужны реальные данные. – gabriele

+1

хорошо, это потому, что пример не знает, что ** вы ** хотите сделать, чтобы получить * ваши * данные. Вот где ** вы ** заходите. –

0

Что еще вы после? Общая идея заключается в том, что ListBox будет звонить в ваш IList, когда ему нужны данные. он попросит элемент по определенному индексу, и вы передадите объект обратно. он, предположительно, вызывает ToString() на этом объекте и отображает результат в списке.

Что такое фактический объект и где вы его тянете, полностью зависит от вас. Возможно, вы используете в памяти очень большой массив. Вы могли бы вытащить из IsolStorage или веб-службы. Вы могли бы использовать его для получения информации о файле, но я не подозреваю, что у кого-то есть готовая реализация IList, так что это часть, которую вам придется реализовать на основе вашего конкретного проекта.