Передача данных с страницы на страницу для Windows Phone 8.1

У меня есть тот же вопрос, что и Передача данных со страницы на страницу, но только для Windows Phone 8.1 (в отличие от Windows Phone 7). Вот вопрос:

Я ищу наилучшую практику передачи данных со страницы на страницу.

На странице A у меня есть кнопка, которая срабатывает. Страница B. На странице B у меня есть 6 текстовых полей, которые позволяют пользователю вводить информацию. Когда пользователь будет выполнен, нажмите кнопку, которая вернет их на страницу A.

Я хочу передать эти данные на страницу А.

Я видел предложения:

создавать документы XML и сохранять в изолированном хранилище используйте класс App для хранения информации в свойствах передать его как строку запроса Я ищу лучшую практику. Есть ли тот, который рекомендует Microsoft, или тот, который обычно считается лучшим?

Спасибо

Ответ 1

В WP8.1 Runtime - для Silverlight, методы, используемые в WP8.0, все равно должны работать - у вас есть пара хоков:

  • первый и, вероятно, самый простой способ - использовать Переместить с параметром - вам не нужно преобразовывать его в строку если это сериализуемый тип:

    // let assume that you have a simple class:
    public class PassedData
    {
       public string Name { get; set; }
       public int Value { get; set; }
    }
    
    // then you navigate like this:
    Frame.Navigate(typeof(Page1), new PassedData { Name = "my name", Value = 10 });
    
    // and in target Page you retrive the information:
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        PassedData data = e.Parameter as PassedData;
    }
    
  • вы можете использовать некоторые статические объекты для передачи ваших данных в приложении

  • Наконец, как вы уже упоминали, вы можете сохранить свои данные в: LocalSettings, LocalStorage, LocalCache - подумал, что в этом случае вам также придется сериализовать его в XAML, Json или другом.

Обратите внимание, что вам также придется обрабатывать приостановку/возобновление приложений - поэтому вам будет удобно сохранять ваши данные, когда приложение будет приостановлено и загружено, когда оно будет возобновлено. Вы должны помнить, что OnNavigatedTo не вызывается, когда приложение возобновляется.


Выше было о нормальной навигации (вперед). Если вы хотите заполнить некоторые данные на предыдущей странице, у вас есть несколько вариантов:

  • передать обработчик на предыдущую страницу, чтобы вы могли получить доступ к общедоступным переменным/свойствам с текущей страницы,
  • используйте статическую переменную/свойство - возможно, singleton
  • снова использовать файлы/настройки

Обратите внимание, что снова первые два метода имеют недостаток, который приложение может сработать после приостановки. Сохранение файлов может быть лучше здесь, подумал, что требуется еще больше работы и правильной обработки.

Ответ 2

- Сначала создайте класс

public class PassedData
{
   public string email { get; set; }  
}

- тогда вы можете перемещаться по страницам, висящим на значении

Frame.Navigate(typeof(Frame2), new PassedData { email = emailtxt.Text });

- затем поймать значение, которое передается на другой странице

var passedData = e.Parameter as PassedData;

emailtxt.Text = passedData.email;