Хранение переменных между страницами VB WP8

У меня есть приложение, которое записывает время, когда вы нажимаете кнопку. Так что покидайте офис, приезжайте на сайт, покидайте сайт и приезжайте в офис. Я создал кнопку, которая позволяет пользователю вводить детали, которые использовались в работе. Это приведет вас к другому экрану, где происходит ввод. Я могу передать эти переменные обратно на главную страницу, но поскольку я использую:

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

Он сбрасывает данные, которые были на главной странице.

Когда я использую NavigationService.GoBack(), данные остаются.

Есть ли способ сохранить эти данные, когда я ухожу с главной страницы?


person Reece Paterson    schedule 09.12.2013    source источник


Ответы (2)


Да, просто сохраните данные/контекст данных/объект на уровне приложения.

Так, например, используйте объект в 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 и сохранить/загрузить, когда вам это нужно)

person Igor Ralic    schedule 09.12.2013

Сохраните значение в переменной в App.xaml.cs. App.xaml.cs хранит переменную на протяжении всего жизненного цикла приложения. Если значение часто используется и в других классах/страницах, то в качестве альтернативы вы можете создать одноэлементный или статический класс и использовать его в качестве менеджера для этих значений. Загромождение App.Xaml.cs — не лучший выбор, если вам нужно сохранить много значений.

person noob    schedule 10.12.2013