Не сохраняются настройки в Isolated Storage

Рейтинг: 1Ответов: 1Опубликовано: 03.04.2015

Здравствуйте, хочу сделать изменение шрифта в FixedHtmlTextBlock. И решил создать 2 разных Data Template, один по умолчанию (с размером шрифта 20), а другой будет выбираться в настройках (с размером 25). Проблема следующая: когда сохраняю увеличенный шрифт то при переходе на другую страницу и обратно - шрифт сохраняется увеличенным, а когда закрываю приложение и захожу снова, то настройка увеличенного шрифта не сохраняется.

Получение настройки:

public Section1Detail()
{
    InitializeComponent();

    // Размер текста
    if (IsolatedStorageSettings.ApplicationSettings.Contains("TextSize"))
    {
        Container.ItemTemplate = (DataTemplate)(IsolatedStorageSettings.ApplicationSettings["TextSize"]);
    }
}

Сохранение настройки:

Container.ItemTemplate = (DataTemplate)this.Resources["Large"];

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings; 
if (!settings.Contains("TextSize"))
{
    settings.Add("TextSize", Container.ItemTemplate);
}
else 
{
    settings.Remove("TextSize");
    settings.Add("TextSize", Container.ItemTemplate);
}
settings.Save();

Ответы

▲ 2Принят

В IsolatedStorageSettings можно сохранять только объекты сериализуемых типов. DataTemplate таковым не является. Поскольку вам нужно сохранять размер, то использование DataTemplate еще и несколько излишне. На вашем месте я бы сохранял в настройках сам размер как число.

P.S. Да, и при добавлении настройки достаточно вот так писать, все эти проверки и Remove не нужны:

settings["TextSize"] = textSize;