Статический класс, как упоминает Фил, - хорошая идея, но я бы посоветовал изучить использование внедрения зависимостей.Вам может не понадобиться полный контейнер IoC, но это, вероятно, поможет вашему сценарию.Caliburn.Micro позволяет легко интегрировать такой контейнер.
Создать класс Settings
.(Я бы также создал интерфейс ISettings
, чтобы вы могли передавать настройки заглушек в модели представлений для тестирования, но это дополнительный бонус.) Затем сделайте так, чтобы все ваши модели ViewModel требовали экземпляра ISettings
в своих конструкторах.
Когда ваше приложение запускается, вы создаете один экземпляр Settings
, который читает из IsolatedStorage или где у вас есть настройки, а затем передаете этот экземпляр в любой созданный ViewModel.
Этот Settings
классможет отвечать за сохранение настроек обратно в IsolatedStorage всякий раз, когда это необходимо.
Пример этого сценария:
В AppBootstrapper
class:
PhoneContainer container;
ISettings settings;
protected override void Configure()
{
// Your usual stuff go here
settings = new Settings();
settings.LoadSettings();
container.Instance(settings);
}
В вашей ViewModelкласс:
ISettings settings;
public MainPageViewModel(ISettings settings)
{
this.settings = settings;
}
На этом этапе вам будут доступны все настройки для вашей ViewModel.