Сводные данные и изолированное хранилище в Silverlight - Базовое изолированное хранилище
ОГЛАВЛЕНИЕ
Базовое изолированное хранилище
Этот образец приложения позволяет пользователю добавить несколько веб-каналов и просмотреть все элементы для каждого из них. Если пользователь укажет десять веб-каналов и решит, что ему необходимо закрыть приложение и прочесть их позже, то он, скорее всего, ожидает, что оно запомнит эти веб-каналы. В противном случае ему придется указывать Uri для каждого веб-канала всякий раз, когда он открывает приложение. Поскольку эти веб-каналы могут быть разными для каждого пользователя, их можно хранить или на сервере, используя какой-нибудь маркер для идентификации пользователя, который их ввел, или на компьютере пользователя.
Silverlight обеспечивает хранение данных в защищенной области компьютера пользователя с помощью классов пространства имен System.IO.IsolatedStorage. Silverlight Isolated Storage – словно куки-файлы на стероидах: оно позволяет хранить простые скалярные значения или даже сериализованные сложные графы объектов на клиентском компьютере. Самый простой способ выполнить сохранение в изолированном хранилище – это создать запись ApplicationSettings и сохранить данные в ней, как показано ниже:
private void SaveFeedsToStorage_UsingSettings()
{
string data = GetFeedsFromStorage_UsingSettings() + FEED_DELIMITER +
txtAddress.Text;
if (IsolatedStorageSettings.ApplicationSettings.Contains(FEED_DATA))
IsolatedStorageSettings.ApplicationSettings[FEED_DATA] = data;
else
IsolatedStorageSettings.ApplicationSettings.Add(FEED_DATA, data);
}
Ее можно вызывать при каждом добавлении или удалении SyndicationFeed из ObservableCollection<SyndicationFeed> поля экземпляра, которое называется _feeds. Поскольку ObservableCollection предоставляет событие CollectionChanged, то событию, выполняющему сохранение, можно назначить обработчик, как показано ниже:
_feeds.CollectionChanged += ((sender, e) => {
SaveFeedsToStorage_UsingSettings(); });
При выполнении метод SaveFeedsToStorage_UsingSettings в первую очередь вызывает метод GetFeedsFromStorage_UsingSettings, который собирает адреса всех полей из изолированного хранилища и помещает их в одну строку, ограниченную специальным символом.
При первом запуске приложения метод LoadFeedsFromStorage_UsingSettings получает веб-каналы из изолированного хранилища:
private void LoadFeedsFromStorage_UsingSettings()
{
string data = LoadFeedsFromStorage_UsingSettings();
string[] feedList = data.Split(new string[1] { FEED_DELIMITER },
StringSplitOptions.RemoveEmptyEntries);
foreach (var address in feedList)
LoadFeed(new Uri(address));
}
Код сначала выполняет чтение списка адресов Uri для каждого веб-канала из изолированного хранилища. Затем он выполняет итерацию адресов и загружает по одному каждый отдельный веб-канал с помощью метода LoadFeed method.