2016-11-01 9 views
1

У нас есть UWP для Windows IoT Core, нам нужно сохранить некоторые настройки, но эти параметры должны жить, даже если приложение остановлено или перезапуск устройства IoT.Как сохранить настройки приложения?

Код, который у меня есть, работает отлично, когда приложение открыто, и если я переключаюсь между страницами XAML, но не работает, когда приложение остановлено, это похоже на то, что переменная никогда не существовала.

static class Global 
{ 
    public static Windows.Storage.ApplicationDataContainer localSettings { get; set; } 
    public static Windows.Storage.StorageFolder localFolder { get; set; } 
} 

private void Btn_Inciar_Config_Click(object sender, RoutedEventArgs e) 
{ 
    if (TxtDeviceKey.Text != String.Empty || TxtDeviceName.Text != String.Empty || Txt_Humedad_Config.Text != String.Empty || Txt_Intervalo_Config.Text != String.Empty || Txt_Temperatura_Ambiente_Config.Text != String.Empty || Txt_Temperaura_Config.Text != String.Empty) 
    { 
     Windows.Storage.ApplicationDataCompositeValue composite = 
     new Windows.Storage.ApplicationDataCompositeValue(); 
     composite["GlobalDeviceKey"] = TxtDeviceKey.Text; 
     composite["GlobalDeviceName"] = TxtDeviceName.Text; 
     composite["GlobalTemperature"] = Txt_Temperaura_Config.Text; 
     composite["GlobalHumidity"] = Txt_Humedad_Config.Text; 
     composite["GlobalTemperatureRoom"] = Txt_Temperatura_Ambiente_Config.Text; 
     composite["GlobalInterval"] = Txt_Intervalo_Config.Text; 

     localSettings.Values["ConfigDevice"] = composite; 
     Lbl_Error.Text = ""; 
     Frame.Navigate(typeof(MainPage)); 
    } 
    else 
    { 
     Lbl_Error.Text = "Ingrese todos los campos de configuracion"; 
    } 
} 

ответ

3

Если вы хотите сохранить ваши настройки локально вы можете хранить их в виде отдельных элементов или в качестве ApplicationDataCompositeValue (сохранить все значения как единое целое), как вы делали. Просто поместите составные (или отдельные предметы) в контейнер ApplicationData.Current.LocalSettings. Ниже небольшой фрагмент кода, который вы можете просто скопировать в пустое приложение и прикрепить к двум кнопкам, чтобы попробовать.

private void SaveClicked(object sender, RoutedEventArgs e) 
{ 
    Windows.Storage.ApplicationDataCompositeValue composite = 
     new Windows.Storage.ApplicationDataCompositeValue(); 
    composite["GlobalDeviceKey"] = "Key"; 
    composite["GlobalDeviceName"] = "Name"; 
    ApplicationData.Current.LocalSettings.Values["ConfigDevice"] = composite; 
} 

private void LoadClicked(object sender, RoutedEventArgs e) 
{ 
    Windows.Storage.ApplicationDataCompositeValue composite = 
     (ApplicationDataCompositeValue) ApplicationData.Current.LocalSettings.Values["ConfigDevice"]; 
    var key = (string)composite["GlobalDeviceKey"]; 
}