2013-02-02 9 views
5

Sto lavorando a un'app WinRT che in realtà è anche un gioco. Ho bisogno di mantenere informazioni diverse come le impostazioni audio o le statistiche dei giocatori da qualche parte in una sorta di file o in qualche modo. Se si tratta di un file, è sufficiente scrivere le impostazioni in o ...? Ho un'idea ma penso sia troppo rudimentale ... Qual è l'approccio migliore per ottenere questo?Modo migliore per mantenere le impostazioni per un'app WinRT?

Qualsiasi aiuto o suggerimento è molto apprezzato!

risposta

16

Ecco alcuni modi per salvare Dati in un'app WinRT, il metodo con Impostazioni nel nome è probabilmente quello che stai cercando! - Aggiunti anche gli altri, puoi anche serializzare i dati se vuoi . È un codice funzionante, ma non dimenticare di aggiungere la gestione degli errori, ecc. È un semplice codice demo :)

Per quanto riguarda le impostazioni, è possibile salvare le impostazioni semplici come chiave e valori, e per le impostazioni più complesse è possibile utilizzare un contenitore. Ho fornito entrambi gli esempi here =)

public class StorageExamples 
{ 
    public async Task<string> ReadTextFileAsync(string path) 
    { 
     var folder = ApplicationData.Current.LocalFolder; 
     var file = await folder.GetFileAsync(path); 
     return await FileIO.ReadTextAsync(file); 
    } 

    public async void WriteTotextFileAsync(string fileName, string contents) 
    { 
     var folder = ApplicationData.Current.LocalFolder; 
     var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); 
     await FileIO.WriteTextAsync(file, contents); 
    } 

    public void SaveSettings(string key, string contents) 
    { 
     ApplicationData.Current.LocalSettings.Values[key] = contents; 
    } 

    public string LoadSettings(string key) 
    { 
     var settings = ApplicationData.Current.LocalSettings; 
     return settings.Values[key].ToString(); 
    } 
    public void SaveSettingsInContainer(string user, string key, string contents) 
    { 
     var localSetting = ApplicationData.Current.LocalSettings; 

     localSetting.CreateContainer(user, ApplicationDataCreateDisposition.Always); 

     if (localSetting.Containers.ContainsKey(user)) 
     { 
      localSetting.Containers[user].Values[key] = contents; 
     } 
    } 
} 
+0

Grazie mille, ma la mia domanda ora è: non posso salvare tutte le impostazioni in un file in qualche modo ...? Solo per leggere le righe di testo dal file quando ne ho bisogno al momento dell'avvio dell'app o per riscrivere quel file come testo quando salvare? È una buona pratica? – VasileF

+0

Il contenitore ti darà questa possibilità, basta aggiornare il valore dei tasti che vuoi modificare. –

+0

E se ci sono molti dati, potresti anche usare un piccolo database come SQLite, c'è un .Net wrapper per questo, - assicurati di usare l'implementazione asincrona. Consiglierei comunque di utilizzare le impostazioni composite/container in base a ciò che ci hai detto. –

3

MSDN ha an article on using app settings in Windows Store apps.

Lo spazio dei nomi Windows.UI.ApplicationSettings contiene tutte le classi necessarie.

Fornisce classi che consentono agli sviluppatori di definire le impostazioni dell'app visualizzate nel riquadro delle impostazioni della shell di Windows. Il riquadro delle impostazioni fornisce agli utenti una posizione coerente per accedere alle impostazioni dell'app.

Fondamentalmente queste classi consentono di archiviare le impostazioni dell'applicazione e di agganciarle nella posizione standard per tutte le impostazioni dell'applicazione. I tuoi utenti non devono imparare nulla di nuovo, le impostazioni saranno nel posto previsto.