Windows Phone 8 长列表选择器图片缓存

3

我有一个在XAML中的长列表选择器:

<phone:LongListSelector x:Name="listBox1" ItemsSource="{Binding ListView}" Margin="0,140,0,0">
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="110" />
                    <ColumnDefinition Width="210" />
                    <ColumnDefinition Width="80" />
                    <ColumnDefinition Width="80" />
                </Grid.ColumnDefinitions>
                <Image Height="110" Width="110" Grid.Column="0" Tap="Image_Tap" Source="{Binding profilePicURL}" Tag="{Binding username}" Margin="0,1"/>
                <TextBlock Grid.Column="1" /> // blablabla
                <TextBlock Grid.Column="2" /> // blablabla
                <Image Grid.Column="3"/> // blablablabla
            </Grid>
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

还有ListViewModel.cs文件

using Newtonsoft.Json;
using System;
using System.ComponentModel;

namespace MyApp
{
    public class ListViewModel : INotifyPropertyChanged
    {

        private string _userid;
        [JsonProperty(PropertyName = "userid")]
        public string userid
        {
            get
            {
                return _userid;
            }
            set
            {
                if (value != _userid)
                {
                    _userid = value;
                    NotifyPropertyChanged("userid");
                }
            }
        }

        private string _profilePicURL;
        [JsonProperty(PropertyName = "profile_picture")]
        public string profilePicURL
        {
            get
            {
                return _profilePicURL;
            }
            set
            {
                if (value != _profilePicURL)
                {
                    _profilePicURL = value;
                    NotifyPropertyChanged("profilePicURL");
                }
            }
        }

        private string _username;
        [JsonProperty(PropertyName = "username")]
        public string username
        {
            get
            {
                return _username;
            }
            set
            {
                if (value != _username)
                {
                    _username = value;
                    NotifyPropertyChanged("username");
                }
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged(String propertyName)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (null != handler)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }
    }
}

我从数据库中获取20条记录并展示在列表中。一切都很好,但是当我刷新列表时,应用程序会重新加载所有的图片。因为当我刷新后,应用会重新从网上加载最近的20条记录,而实际上只有1或2个新记录出现在列表的顶部,其他所有图片已经被加载过了。那么我该如何把之前的记录往下推,仅仅加载列表顶部的新记录呢?我不想再次下载所有旧的图片,应该怎样进行缓存?当然,当新纪录到来时,底部的记录会消失。
1个回答

0

保存图像到隔离存储文件夹中。从该文件夹中的列表加载图像。 现在,当需要添加新图像时,将它们保存到同一文件夹中并删除不再需要的图像。

这样即使用户关闭应用程序然后重新打开它,图像也会被缓存,为用户节省数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接