如何在导航回页面后保存页面上的内容

时间:2011-11-24 22:23:01

标签: c# silverlight windows-phone-7

我有一个包含4个TextBox的页面。每次按下TextBox,我都会使用NavigationService导航到新页面,以便通过Itembox进行舒适的输入。我使用NavigationContext来从Itembox发送选择。但每次导航回第一页时,页面的构造函数都会被调用,我会看到空文本框而不是填充文本框。

我该如何避免这种情况?

1 个答案:

答案 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