1

我正在开发一个 Windows 应用商店应用程序,并且在将我的 DTO 类序列化回我能够反序列化的 xml 文件时遇到问题。在数据绑定和更改一些数据之后,我不知道如何序列化 DTO 类,以便在我再次反序列化时这些更改可以存在。我正在做的是在登录到我的应用程序后,我还将我的Data对象传递给下一页,即ItemsListView页面。这就是我传递对象的方式:

Dim oData As Data
oData = Await FileHelper.DeserializeXml()
Me.Frame.Navigate(GetType(ItemsListView),oData)

然后,在我的ItemsListView页面中,我将对象绑定到 ,DataContext以便能够像这样查看数据:

    Protected Overrides Sub LoadState(navigationParameter As Object, pageState As Dictionary(Of String, Object))

      Dim oData As Data = navigationParameter

      pageTitle.DataContext = oData.Field

      Me.DefaultViewModel("Items") = oData.ListRoot

    End Sub

然后我还有另一个页面,我在其中传递项目单击对象并将该数据绑定到下一页,这就是代码:

    Private Sub ItemView_ItemClick(sender As Object, e As ItemClickEventArgs) Handles itemGridView.ItemClick

    If e.ClickedItem IsNot Nothing Then
        Me.Frame.Navigate(GetType(RecordAddEditView), e.ClickedItem)
    End If

End Sub

还有更多页面,但我认为这足以了解我的应用程序在做什么。那么在将所有对象传递到下一页并修改这些页面上的数据之后,我怎样才能序列化我的Data对象,以便可以序列化来自所有页面的所有数据?我是否应该在我的 GetDataForSerialization() 方法中这样做,例如在我的 LoginPage 中调用 oData 对象?这可能是一件非常简单的事情,几天后似乎无法弄清楚。任何代码建议表示赞赏。

这是我进行序列化的方式:

    Public Shared Async Function SerializeXml() As Task

    Dim serializer As New XmlSerializer(GetType(Data))
    Dim nameSpaces As XmlSerializerNamespaces = New XmlSerializerNamespaces()
    Dim mStream As New MemoryStream()
    Dim result As Byte()
    Dim dataToSerialize As Data = GetDataForSerialization()

    ' Creates empty namespaces
    nameSpaces.Add(String.Empty, String.Empty)

    ' Serializes the objects
    serializer.Serialize(mStream, dataToSerialize, nameSpaces)

    ' Writes bytes to stream
    result = mStream.ToArray()

End Function

Private Shared Function GetDataForSerialization() As Data

    ' What to do here to get all the data from my Data class so that I can serialize it

End Function
4

0 回答 0