Language: HTML | XAML

Schnellstart: Roaming von App-Daten (XAML)

Applies to Windows and Windows Phone

Hier erfahren Sie, wie Sie Einstellungen und Daten im servergespeicherten App-Datenspeicher speichern und daraus abrufen. Informationen zum Roamingspeicher für App-Daten und zu den Vorteilen seiner Verwendung finden Sie unter Roaming von App-Daten.

Roadmap: Wie hängt dieses Thema mit anderen zusammen? Informationen finden Sie unter:

Registrieren, um Benachrichtigungen bei der Änderung von Roamingdaten zu erhalten

Registrieren Sie das DataChanged-Ereignis. In diesem Beispiel wird DataChangeHandler als Handler für Änderungen an Roamingdaten festgelegt.


void InitHandlers()
{
   Windows.Storage.ApplicationData.Current.DataChanged += 
      new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
}

void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
{
   // TODO: Refresh your data
}

Abrufen der Container für die Einstellungen und Dateien der App

Rufen Sie mit der ApplicationData.RoamingSettings-Eigenschaft die Einstellungen und mit der ApplicationData.RoamingFolder-Eigenschaft die Dateien ab.


Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.StorageFolder roamingFolder = Windows.Storage.ApplicationData.Current.RoamingFolder;

Schreiben von Daten in eine Einstellung

Verwenden Sie die ApplicationDataContainer.Values-Eigenschaft, um auf die Einstellungen im Container roamingSettings zuzugreifen, den wir im vorherigen Abschnitt abgerufen haben. In diesem Beispiel werden eine Einstellung namens exampleSetting und eine Einstellung namens HighPriority erstellt, die am besten dafür geeignet sind, zeitkritische Infos zu übertragen, z. B. den App-Status.

  • Applies to Windows Phone

Die HighPriority-Einstellung wirkt sich nicht in Windows Phone-Apps aus.


// Simple setting

roamingSettings.Values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app
roamingSettings.values["HighPriority"] = "65";


Ein ApplicationDataCompositeValue-Objekt enthält Einstellungen, auf die atomisch zugegriffen werden muss. In diesem Beispiel wird eine Verbundeinstellung namens exampleCompositeSetting erstellt und dem Container roamingSettings hinzugefügt.


// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

roamingSettings.Values["exampleCompositeSetting"] = composite;

Rufen Sie die ApplicationDataContainer.CreateContainer-Methode auf, um einen Einstellungscontainer zu erstellen. In diesem Beispiel wird ein Einstellungscontainer namens exampleContainer erstellt und eine Einstellung namens exampleSetting hinzugefügt. Der Wert Always aus der ApplicationDataCreateDisposition-Enumeration gibt an, dass der Container erstellt wird, sofern er noch nicht vorhanden ist.


// Setting in a container

Windows.Storage.ApplicationDataContainer container = 
   roamingSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);

if (roamingSettings.Containers.ContainsKey("exampleContainer"))
{
   roamingSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello World";
}

Lesen von Daten aus einer Einstellung

Verwenden Sie die ApplicationDataContainer.Values-Eigenschaft, um auf die Einstellung exampleSetting im Container roamingSettings zuzugreifen.


// Simple setting

Object value = roamingSettings.Values["exampleSetting"];

Verwenden Sie die ApplicationDataContainer.Values-Eigenschaft, um auf die Einstellung exampleCompositeSetting im Container roamingSettings zuzugreifen.


// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
   (Windows.Storage.ApplicationDataCompositeValue)roamingSettings.Values["exampleCompositeSetting"];

if (composite == null)
{
   // No data
}
else
{
   // Access data in composite["intVal"] and composite["strVal"]
}

Verwenden Sie die ApplicationDataContainer.Values-Eigenschaft, um auf die Einstellung exampleSetting im Container exampleContainer zuzugreifen.


// Setting in a container

bool hasContainer = roamingSettings.Containers.ContainsKey("exampleContainer");
bool hasSetting = false;

if (hasContainer)
{
   hasSetting = roamingSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");
}

Schreiben von Daten in eine Datei

Erstellen und aktualisieren Sie mit den Datei-APIs, z. B. Windows.Storage.StorageFolder.CreateFileAsync und Windows.Storage.FileIO.WriteTextAsync, eine Datei im Speicher für das Roaming für App-Daten. In diesem Beispiel wird im Container roamingFolder die Datei dataFile.txt erstellt, in die das aktuelle Datum und die Uhrzeit geschrieben werden. Der Wert ReplaceExisting aus der CreationCollisionOption-Enumeration gibt an, dass die Datei ersetzt werden soll, falls sie bereits vorhanden ist.


async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DatetimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await roamingFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
}

Lesen von Daten aus einer Datei

Öffnen und lesen Sie mit den Datei-APIs, z. B. Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync und Windows.Storage.FileIO.ReadTextAsync, eine Datei im Roaming-App-Datenspeicher. In diesem Beispiel wird die im vorherigen Abschnitt erstellte Datei dataFile.txt geöffnet und das Datum aus der Datei gelesen. Einzelheiten zum Laden von Dateiressourcen aus verschiedenen Speicherorten finden Sie unter So wird's gemacht: Laden von Dateiressourcen.


async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await roamingFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

Löschen nicht mehr benötigter Einstellungen

Rufen Sie die ApplicationDataContainerSettings.Remove-Methode auf, um die Einstellung exampleSetting aus dem roamingSettings-Container zu löschen, wenn Sie sie nicht mehr benötigen.


// Delete simple setting

roamingSettings.Values.Remove("exampleSetting");

Rufen Sie die ApplicationDataCompositeValue.Remove-Methode auf, um die Verbundeinstellung exampleCompositeSetting aus dem roamingSettings-Container zu löschen, wenn Sie sie nicht mehr benötigen.


// Delete composite setting

roamingSettings.Values.Remove("exampleCompositeSetting");

Rufen Sie die ApplicationDataContainer.DeleteContainer-Methode auf, um den Einstellungscontainer exampleContainer zu löschen, wenn Sie ihn nicht mehr benötigen.


// Delete container

roamingSettings.DeleteContainer("exampleContainer");

Roaming von Daten mit unterschiedlichen Gerätetypen

Wenn Sie zwei Versionen einer App veröffentlichen – eine Version für den Windows Store und eine Version für den Windows Phone Store – können Sie App-Daten-Roaming für die unterschiedlichen Gerätetypen verwenden. Weisen Sie jeder Version der App denselben Paketfamiliennamen (Package Family Name, PFN) zu, um Datenroaming zwischen verschiedenen Versionen Ihrer App auf verschiedenen Gerätetypen zu implementieren.

Weitere Infos finden Sie unter Roaming von Daten zwischen Windows Store-Apps und Windows Phone Store-Apps.

Anmerkungen

Jede App besitzt ein Kontingent für das Roaming von App-Daten. Überprüfen Sie die ApplicationData.RoamingStorageQuota-Eigenschaft, um die Gesamtgröße der zulässigen Roamingdaten festzustellen. Überschreiten Ihre Roamingdaten das Kontingent, ist das Roaming erst wieder möglich, wenn der Umfang geringer als das Kontingent ist.

Verwandte Themen

Aufgaben
So wird's gemacht: Laden von Dateiressourcen
Schnellstart: Lokale App-Daten
Schnellstart: Temporäre App-Daten
Konzept
Zugriff auf App-Daten mit der Windows-Runtime
Richtlinien
Richtlinien für das Roaming von App-Daten
Referenz
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
Beispiele
Beispiel für Anwendungsdaten

 

 

Anzeigen:
© 2014 Microsoft