Ответ 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
- снова использовать файлы/настройки
Обратите внимание, что снова первые два метода имеют недостаток, который приложение может сработать после приостановки. Сохранение файлов может быть лучше здесь, подумал, что требуется еще больше работы и правильной обработки.