我正在开发一个 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