我有一个包含4个TextBox的页面。每次按下TextBox,我都会使用NavigationService
导航到新页面,以便通过Itembox进行舒适的输入。我使用NavigationContext
来从Itembox发送选择。但每次导航回第一页时,页面的构造函数都会被调用,我会看到空文本框而不是填充文本框。
我该如何避免这种情况?
答案 0 :(得分:2)
您是否主动使用NavigationService.Navigate()
“返回”主页?不要这样做,只需使用NavigationService.GoBack()
或让用户使用后退按钮。
您可以通过PhoneApplicationService.Current.State
转移价值。将其添加到用户将值输入Itembox的页面中:
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
PhoneApplicationService.Current.State["name"] = "value";
base.OnNavigatedFrom(e);
}
当用户返回主页面时,这将保存该值。并在您的主页面代码中添加:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (PhoneApplicationService.Current.State.ContainsKey("name"))
textBox1.Text = (string)PhoneApplicationService.Current.State["name"];
}
这会尝试获取值并将其设置为TextBox
。