Сохранение и загрузка параметров в приложении UWP

В этом разделе приведены инструкции по загрузке и сохранению параметров в приложении UWP. В этом разделе представлены основные интерфейсы API, а также необходимые ссылки на дополнительные ресурсы.

Используйте параметры, чтобы запомнить настраиваемые пользователем аспекты вашего приложения. Например, средство чтения новостей может использовать параметры приложения для сохранения того, какие источники новостей следует отображать и какой шрифт следует использовать для чтения статей.

Мы рассмотрим код для сохранения и загрузки параметров приложения.

Что необходимо знать?

Параметры приложения используются для сохранения данных конфигурации, таких как предпочтения пользователя и состояние приложения.

С параметрами можно использовать следующие типы данных: целые числа, числа двойной точности с плавающей запятой, значения с плавающей запятой, знаки, строки, точки, дату и время и другое. Можно также хранить экземпляры класса ApplicationDataCompositeValue, которые бывают полезны, когда несколько параметров необходимо рассматривать как единое целое. Например, имя шрифта и размер точки для отображения текста в области чтения приложения необходимо сохранять или восстанавливать как единое целое. Это предотвращает рассинхронизацию между параметрами из-за одновременного доступа, например между основной программой и фоновой задачей.

Ниже приведены основные интерфейсы API для сохранения и загрузки параметров приложения.

  • Windows.Storage.ApplicationData.Current.LocalSettings получает контейнер параметров приложения из локального хранилища данных приложения. Параметры, хранящиеся здесь, хранятся на устройстве.
  • Windows.Storage.ApplicationData.Current.RoamingSettings получает контейнер параметров приложения из перемещаемого хранилища данных приложения. Параметры, хранящихся здесь, больше не перемещается (Windows 11), но хранилище параметров по-прежнему доступно. Рекомендуемая замена для RoamingSettings — Служба приложений Azure. Служба приложений Azure широко поддерживается и хорошо описана. Это надежное решение, которое поддерживает сценарии с использованием разных платформ и экосистем, включая iOS, Android и интернет-решения.
  • Windows.Storage.ApplicationDataContainer — это контейнер, представляющий параметры приложения в виде пар "ключ-значение". Этот класс используется для создания и получения значений параметров.
  • Windows.Storage.ApplicationDataCompositeValue представляет несколько параметров приложения, которые должны следует упорядочить как единое целое. Это удобно в тех случаях, когда один параметр не должен обновляться независимо от другого.

Сохранение параметров приложения

Здесь мы сосредоточимся на двух простых сценариях: сохранении и загрузке простой настройки приложения и сохранении и загрузке составного параметра шрифта или размера шрифта.

ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

// Save a setting locally on the device
localSettings.Values["test setting"] = "a device specific setting";

// Save a composite setting locally on the device
Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["Font"] = "Calibri";
composite["FontSize"] = 11;
localSettings.Values["FontInfo"] = composite;

Сохраните параметр, получив ApplicationDataContainer для локального хранилища данных параметров с Windows.Storage.ApplicationData.Current.LocalSettings. Словарные пары "ключ-значение", присваиваемые этому экземпляру, сохраняются в хранилище данных параметров на локальном устройстве.

В приведенном выше примере кода ApplicationDataCompositeValue сохраняет несколько пар "ключ — значение". Составные значения полезны в тех случаях, когда у вас есть несколько параметров, которые не должны быть рассинхронизированы. При сохранении ApplicationDataCompositeValue значения сохраняются и загружаются как единое целое или атомарным образом. Таким образом, связанные параметры не будут рассинхронизированы.

Загрузка параметров приложения

ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

// load a setting that is local to the device
String localValue = localSettings.Values["test setting"] as string;

// load a composite setting
Windows.Storage.ApplicationDataCompositeValue composite = (ApplicationDataCompositeValue)localSettings.Values["FontInfo"];
if (composite != null)
{
    String fontName = composite["Font"] as string;
    int fontSize = (int)composite["FontSize"];
}

Загрузите параметр, получив экземпляр ApplicationDataContainer для локального хранилища данных параметров с Windows.Storage.ApplicationData.Current.LocalSettings. Затем используйте его для получения пар "ключ-значение". Если данные отсутствуют, вы получите пустой объект. В C# это означает, что localValue будет иметь значение null, если параметр не существует.

Загрузите составной параметр аналогичным образом. Получите доступ к парам "ключ — значение" из хранилища данных локальных параметров. Если данные отсутствуют, вы получите значение NULL для ApplicationDataContainer. Поэтому в примере кода выше присутствует проверка if (composite != null).

Полезные интерфейсы API и документы

Вот краткое описание интерфейсов API и другая полезная документация, которая поможет вам сохранять и загружать параметры приложения.

Полезные интерфейсы API

API Description
ApplicationData.LocalSettings Получает контейнер параметров приложения из локального хранилища данных приложения.
ApplicationData.RoamingSettings Получает контейнер параметров приложения из перемещаемого хранилища данных приложения.
ApplicationDataContainer Контейнер для параметров приложения, который поддерживает создание, удаление, перечисление и обход иерархии контейнеров.
Windows.UI.ApplicationSettings Namespace Содержит классы, которые вы будете использовать для определения параметров приложения, отображающихся на панели параметров оболочки Windows.

Полезные документы

Статья Описание
Руководство по параметрам приложений Рекомендации по созданию и отображению параметров приложения.
Хранение и получение параметров и других данных приложения Руководство по сохранению и извлечению параметров.

Полезные примеры кода

Пример кода Description
Пример данных приложения В сценариях 2–4 рассказывается о работе с параметрами.