为什么我在页面之间导航时会丢失数据? (WP8)

时间:2014-03-01 14:42:33

标签: vb.net windows-phone-8 sdk

好吧,让我说我有2页。 第一个包含一个文本框和一个按钮,第二个包含一个列表框。

很简单,如果你在那个文本框中写一些内容并点击那个按钮,信息就会被添加到列表框中。

第一页的代码

dim textitem as string = ""
NavigationService.Navigate(New Uri("/Page1.xaml?text=" & textitem,  UriKind.Relative))

第二页中的代码

dim newitem as string = ""
Protected Overrides Sub OnNavigatedTo(e As System.Windows.Navigation.NavigationEventArgs)
    MyBase.OnNavigatedTo(e)
    If NavigationContext.QueryString.TryGetValue("text", newitem) Then
        ListBox1.Items.Add(newitem)
    End If
End Sub

现在一切正常,项目就会被添加。 问题是当我回到第一页而没有传输任何数据然后返回第二页而没有传输任何数据时,项目就会消失,第二页会以第一页的方式返回。

为什么会这样?我应该做别的事吗?或者我做错了什么?

提前多多感谢。

(当我使用普通浏览器时,如果我在我的第一页上浏览某些内容然后我决定转到第二页然后返回到第一页,则webbrowser为空白时,会发生同样的事情。)< / p>

1 个答案:

答案 0 :(得分:0)

除非您实施某种页面缓存,否则会为每个导航创建新的页面实例 - 因此不会保留您的数据。您可能希望在页面构造函数中放置断点来测试它。

该页面提供了一个State字典,您可以在其中存储需要恢复的所有数据。

Protected Overrides Sub OnNavigatedFrom(ByVal e As System.Windows.Navigation.NavigationEventArgs)
    State("MyPageState") = allState
End Sub


Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
    allState = CType(State("MyPageState"),MyStateObject)
End Sub

有关页面状态的详细信息,请参阅this article