在页面VB WP8之间存储变量

时间:2013-12-09 20:35:03

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

我有一个应用程序,可以在按下按钮时记录时间。所以离开办公室,到达现场,离开现场到办公室。我创建了一个按钮,允许用户输入作业中使用的部件。这会将您带到另一个输入屏幕。我可以将这些变量传递回主页面,但因为我正在使用:

NavigationService.Navigate(New Uri("/MainPage.xaml?msg=" & textBox1.Text, UriKind.Relative))

重置主页面中的数据。

当我使用NavigationService.GoBack()时,数据仍然存在。

当我离开主页时,有没有办法保存这些数据?

2 个答案:

答案 0 :(得分:2)

是的,只需将数据/ datacontext /对象保持在应用程序级别。

例如,使用App.xaml.vb中的对象

Public Shared Property MyBook() As Book
Get
    Return m_MyBook
End Get
Set
    m_MyBook = Value
End Set
End Property
Private Shared m_MyBook As Book

在您网页上的OnNavigatingFrom事件中(或者甚至在您喜欢的任何地方之前),保存该数据

Protected Overrides Sub OnNavigatingFrom(ByVal e As System.Windows.Navigation.NavigatingCancelEventArgs)
    App.MyBook = currentBook
End Sub

当导航回那个页面时,只需检查App.MyBook是否为空,如果不是,则意味着你在导航之前已经缓存了一些东西,所以只需读取它并将当前的datacontext设置为它(或者你设置了您在页面上的数据)

Protected Overrides Sub OnNavigatedTo(ByVal e As System.Windows.Navigation.NavigationEventArgs)
    If (App.MyBook Is Nothing) Then

    Else
        currentBook = App.MyBook
    End If
End Sub

(因为你没有共享相关代码,我的实现相当抽象,但重点是 - 将它保存在App.xaml.cs中并在需要时保存/加载它)

答案 1 :(得分:0)

将值存储在App.xaml.cs的变量中。 App.xaml.cs在应用程序的整个生命周期内存储变量。如果该值经常在其他类/页面中使用,那么作为替代方法,您可以创建单例或静态类,并将其用作这些值的管理器。如果要存储许多值,那么克隆App.Xaml.cs不是一个好的选择。