我已按照此处的教程来保留页面之间的状态。
但是,当我以编程方式导航回此页面时,状态字典始终为空!这里似乎有什么问题?
我已经在 Emulator 8.0.10322 720P 上测试了这种行为。
这就是我所做的:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
if (e.NavigationMode != NavigationMode.Back)
{
State["IS"] = ResultsList.ItemsSource;
State["SI"] = ResultsList.SelectedItem;
State["dgtest"] = new Data();
State["test"] = "gi2";
}
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (e.IsNavigationInitiator && e.NavigationMode != NavigationMode.Back)
{
ResultsList.ItemsSource = (System.Collections.IList) State["IS"];
ResultsList.SelectedItem = State["SI"];
}
}
ItemsSource中的对象是 Data 类型,在此处定义:
[DataContract]
public class Data
{
[DataMember]
public string Datum { get; set; }
}
编辑:以编程方式导航回来,我打电话NavigationService.Navigate(new Uri("/mypages/page.xaml", UriKind.Relative));