Мой ответ будет общим - аналогично вашему вопросу. Я предполагаю, что вы точно знаете, что проблема в изображениях. (Потому что простой ListBox с несколькими сотнями текстовых элементов может стоить вам много МБ.)
При поиске в Интернете вы найдете множество ссылок, таких как , эта . Но общий анализ легко сделать.
Сделайте снимок экрана размером WP7, то есть 480x800. 32-битное растровое изображение (полагаю, именно это использует WP7 при открытии изображения) занимает примерно 1,5 МБ (простое умножение).
Один и тот же файл jpg может иметь в 10 раз меньший размер (для высококачественного сжатия) или даже меньше.
Теперь, что делается за кулисами, когда вы используете конструкцию
<image source="http://..."/>.
(При отсутствии какой-либо информации от вас, я полагаю, это то, что вы используете.)
WP7 загружает изображение и добавляет его в кеш. Кэш, по-видимому, отслеживает использование Uri, указывающего на изображение.
Как только изображение откроется, то есть преобразуется в растровое изображение с собственным размером изображения. В этом процессе изображение подвергается пониженной дискретизации, если оно превысит макс. WP7 размер текстуры.
Вы можете настроить размер растрового изображения, как описано здесь . Если вы заботитесь о качестве, вам следует использовать коэффициент уменьшения масштаба 2, 4 или 8. В случае JPEG эти факторы представляют собой самый быстрый вариант. (Ну, я понятия не имею, известно ли вам разрешение изображения до его загрузки в элемент управления изображением. Получить эту информацию из файла jpg не так уж и сложно, но сейчас я понятия не имею, как это можно сделать на WP7.)
Растровое изображение освобождается, если (мое предположение), если источник элемента управления установлен на ноль. Загруженный образ удаляется из кеша, когда Uri имеет значение NULL. (Об этом много раз сообщают в Интернете.)
Если вы возьмете всю эту информацию, у вас должна быть возможность (вроде) контролировать использование кеша изображений. Вы можете приблизительно оценить размер изображения и решить, какие изображения остаются в кэше. Возможно, для этого потребуются некоторые хитрости, такие как хранение объектов Uri в ваших собственных структурах и освобождение их по мере необходимости. Я не говорю, что это легко сделать, но это, безусловно, возможно.