Language: HTML | XAML

快速入門:應用程式資料漫遊 (XAML)

了解如何從應用程式資料漫遊存放區儲存與抓取設定和檔案。 如需應用程式資料漫遊存放區及為什麼要使用它的詳細資訊,請參閱應用程式資料漫遊

藍圖: 這個主題與其他主題的相關性?請參閱:

登錄以在漫遊資料變更時收到通知

登錄 DataChanged 事件。這個範例會將 DataChangeHandler 設定成處理漫遊資料變更的處理常式。


Private Sub InitHandlers()
    AddHandler Windows.Storage.ApplicationData.Current.DataChanged, AddressOf DataChangeHandler
End Sub

Private Sub DataChangeHandler(ByVal appData As Windows.Storage.ApplicationData, ByVal o As Object)
    ' TODO: Refresh your data
End Sub

取得應用程式各項設定和檔案的容器

使用 ApplicationData.RoamingSettings 屬性來取得設定,而使用 ApplicationData.RoamingFolder 屬性來取得檔案。


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

將資料寫入設定

使用 ApplicationDataContainer.Values 屬性來存取上一節中取得之 roamingSettings 容器的設定。這個範例會建立名為 exampleSetting 的設定以及名為 HighPriority 的設定,後者適用於轉換具有時間關鍵的資訊,例如應用程式狀態。

注意  HighPriority 設定在 Windows Phone 市集應用程式中沒有作用。


' Simple setting
roamingSettings.Values("exampleSetting") = "Hello World";
' High Priority setting, for example, last page position in book reader app
roamingSettings.Values("HighPriority") = "65";


ApplicationDataCompositeValue 物件包含的設定,在存取時不可分開進行。這個範例會建立名為 exampleCompositeSetting 的複合設定,然後將它新增到 roamingSettings 容器。


' Composite setting

Dim composite As New Windows.Storage.ApplicationDataCompositeValue
composite("intVal") = 1
composite("strVal") = "string";

roamingSettings.Values("exampleCompositeSetting") = composite

呼叫 ApplicationDataContainer.CreateContainer 方法來建立設定容器。這個範例會建立名為 exampleContainer 的設定容器,然後新增名為 exampleSetting 的設定。來自 ApplicationDataCreateDisposition 列舉的 Always 值,指出如果還沒有容器,就會建立一個容器。


' Setting in a container

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

If roamingSettings.Containers.ContainsKey("exampleContainer") Then
    roamingSettings.Containers("exampleContainer").Values("exampleSetting") = "Hello World"
End If

從設定讀取資料

使用 ApplicationDataContainer.Values 屬性來取得 roamingSettings 容器中的 exampleSetting 設定。


' Simple setting

Dim value As Object = roamingSettings.Values("exampleSetting")

使用 ApplicationDataContainer.Values 屬性來取得 roamingSettings 容器中的 exampleCompositeSetting 設定。


' Composite setting

Dim composite As Windows.Storage.ApplicationDataCompositeValue = 
   CType(roamingSettings.Values("exampleCompositeSetting"), Windows.Storage.ApplicationDataCompositeValue)

If composite Is Nothing Then
   ' No data
Else
   ' Access data in composite("intVal") and composite("strVal")
End If

使用 ApplicationDataContainer.Values 屬性來取得 exampleContainer 容器中的 exampleSetting 設定。


' Setting in a container

Dim hasContainer As Boolean = roamingSettings.Containers.ContainsKey("exampleContainer")
Dim hasSetting As Boolean = False

If hasContainer Then
    hasSetting = roamingSettings.Containers("exampleContainer").Values.ContainsKey("exampleSetting")
End If

將資料寫入檔案

使用檔案 API,例如 Windows.Storage.StorageFolder.CreateFileAsyncWindows.Storage.FileIO.WriteTextAsync,在應用程式資料漫遊存放區中建立和更新檔案。這個範例會在 roamingFolder 容器中建立名為 dataFile.txt 的檔案,然後在這個檔案中寫入目前的日期與時間。來自 CreationCollisionOption 列舉的 ReplaceExisting 值,指出檔案如果已經存在,就會取代它。


Imports Windows.Globalization.DateTimeFormatting

Private Async Sub WriteTimestamp()
   Dim formatter As DateTimeFormatter = New DateTimeFormatter("longtime")

   Dim sampleFile As StorageFile = Await roamingFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting)
   Await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
End Sub

從檔案讀取資料

使用檔案 API,例如 Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadTextAsync,在應用程式資料漫遊存放區中開啟和讀取檔案。這個範例會開啟上一節中建立的 dataFile.txt 檔案,然後讀取該檔案的日期。如需從各種位置載入檔案資源的詳細資料,請參閱如何載入檔案資源


Private Async Function ReadTimestamp() As Task
   Try
      Dim sampleFile As StorageFile = Await roamingFolder.GetFileAsync("dataFile.txt")
      Dim timestamp As string = Await FileIO.ReadTtextAsync(sampleFile)
      ' Data is contained in timestamp
   Catch e1 As Exception
      ' Timestamp not found
   End Try
End Function

當設定不再需要時將其刪除

當您不再需要 exampleSetting 設定時,呼叫 ApplicationDataContainerSettings.Remove 方法,從 roamingSettings 容器中將其刪除。


' Delete simple setting

roamingSettings.Values.Remove("exampleSetting")

當您不再需要 exampleCompositeSetting 複合設定時,呼叫 ApplicationDataCompositeValue.Remove 方法,從 roamingSettings 容器中將其刪除。


' Delete composite setting

roamingSettings.Values.Remove("exampleCompositeSetting")

當您不再需要 exampleContainer 設定容器時,呼叫 ApplicationDataContainer.DeleteContainer 方法將其刪除。


' Delete container

roamingSettings.DeleteContainer("exampleContainer")

在不同裝置類型間漫遊資料

如果您發佈兩個應用程式版本 (一個版本適用於 Windows 市集,另一個版本適用於 Windows Phone 市集),就可以在兩個不同裝置類型上執行的應用程式間漫遊應用程式資料。若要在不同裝置類型上的不同應用程式版本間漫遊資料,請為每個應用程式版本指定相同的套件系列名稱 (PFN)。

如需詳細資訊,請參閱如何在 Windows 市集應用程式和 Windows Phone 市集應用程式之間漫遊資料

備註

每個應用程式都有一個應用程式資料漫遊的配額。檢查 ApplicationData.RoamingStorageQuota 屬性,判斷允許的漫遊資料大小總計。如果您的漫遊資料超過配額,必須在低於配額之後,才會繼續漫遊。

相關主題

工作
如何載入檔案資源
快速入門:本機應用程式資料
快速入門:暫時的應用程式資料
概念
使用 Windows 執行階段存取應用程式資料
指導方針
應用程式資料漫遊的指導方針
參考
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
範例
應用程式資料範例

 

 

顯示:
© 2015 Microsoft