2

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

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

它重置主页中的数据。

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

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

4

2 回答 2

2

是的,只需将数据/数据上下文/对象保持在 App 级别。

例如,在 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 是否为空,如果不是,则表示您在导航之前已经缓存了某些内容,因此只需阅读它并将当前数据上下文设置为它(或者您将数据设置为这页纸)

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 中并在需要时保存/加载它)

于 2013-12-09T21:37:20.280 回答
0

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

于 2013-12-10T15:30:27.643 回答