#c# #image #xaml #windows-phone-8 #longlistselector
#c# #изображение #xaml #windows-phone-8 #longlistselector
Вопрос:
У меня есть longlistselector в 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 записей из Интернета, и, возможно, в верхней части этого списка 20 слотов есть 1 или 2 новые записи, а все остальные изображения уже загружены. Итак, как я могу просто «нажать» старые и загружать ТОЛЬКО новые записи сверху. Я не хочу снова загружать все старые изображения. Как я могу его кэшировать? Конечно, записи внизу исчезнут, когда новые записи появятся сверху.
Ответ №1:
Сохраните изображения в изолированной папке хранения. Загрузите изображения в list
из этой папки. Теперь, когда необходимо добавить новые изображения, сохраните их в той же папке и удалите те, которые больше не нужны.
Таким образом, изображения будут кэшироваться, даже если пользователь закроет приложение, а затем снова откроет его, сохраняя данные и для пользователя.