Настройки в приложении Template10

Я хочу создать пользовательскую настройку в приложении Template10. Служба настроек плохо документирована, поэтому я хотел бы спросить, какой лучший/рекомендуемый способ создать пользовательскую настройку, например, я хочу добавить настройку, в которой вы можете включить или выключить историю поиска, это просто логическое значение. Раньше я использовал это для установки настроек в приложении: ApplicationData.Current.LocalSettings.Values["SettingName"] = true;

Чтобы получить значение настройки, я бы просто использовал:

(bool)ApplicationData.Current.LocalSettings.Value["SettingName"]; 

person user5902075    schedule 09.03.2016    source источник


Ответы (1)


Взгляните на класс SettingsService в минимальном шаблоне или шаблоне гамбургера, он должен выглядеть так:

public class SettingsService
{
    public static SettingsService Instance { get; }
    static SettingsService()
    {
        // implement singleton pattern
        Instance = Instance ?? new SettingsService();
    }

    Template10.Services.SettingsService.ISettingsHelper _helper;
    private SettingsService()
    {
        _helper = new Template10.Services.SettingsService.SettingsHelper();
    }

    // add your custom settings here like this:
    public bool SettingName
    {
        get { return _helper.Read(nameof(SettingName), false); }  // 2nd argument is the default value
        set { _helper.Write(nameof(SettingName), value); }
    }
}

Как видите, он реализует шаблон singleton и использует помощник из Template10 для чтения и записи значений в настройки приложения. Я также добавил туда пользовательскую настройку под названием SettingName.

Чтобы использовать его в своей ViewModel, создайте приватную переменную:

private SettingsService _settings = SettingsService.Instance;

а затем используйте его в любом методе, геттере или сеттере, который вы хотите, например:

var something = _settings.SettingName;  // read
_settings.SettingName = true;  // write

Если вы хотите изменить поведение своего приложения на основе какой-либо настройки, рекомендуется сделать это в сеттере в классе SettingsService. Однако я могу представить себе ситуации, когда вы могли бы сделать это изменение непосредственно в ViewModel.

person Honza Kalfus    schedule 09.03.2016