C# Windows Phone保留页面状态不工作
当我转到另一个页面时,我试图保留页面状态,但由于某些原因,当我返回到此页面时,这些项目将返回到其默认状态。为什么不起作用?它似乎完全遵循教程C# Windows Phone保留页面状态不工作,c#,windows-phone,C#,Windows Phone,当我转到另一个页面时,我试图保留页面状态,但由于某些原因,当我返回到此页面时,这些项目将返回到其默认状态。为什么不起作用?它似乎完全遵循教程 protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) { base.OnNavigatedFrom(e); State["Title"] = TitleTextBox.Tex
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
State["Title"] = TitleTextBox.Text;
//all of those are RadioButtons - if their is a better way to do it then please comment :)
int i = new int();
if (RB0.IsChecked.Value)
i = 0;
else if (RB1.IsChecked.Value)
i = 1;
else if (RB2.IsChecked.Value)
i = 2;
else if (RB3.IsChecked.Value)
i = 3;
State["CheckedRB"] = i;
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (State.ContainsKey("Title"))
TitleTextBox.Text = State["Title"] as string;
if (State.ContainsKey("CheckedRB"))
{
int i = (int)State["CheckedRB"];
if (i == 0)
RB0.IsChecked = true;
else if (i == 1)
RB1.IsChecked = true;
else if (i == 2)
RB2.IsChecked = true;
else if (i == 3)
RB3.IsChecked = true;
}
}
编辑:我通过添加断点来跟踪问题
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
State["Title"] = TitleTextBox.Text;
string look0 = WorkOutName.Text;
string look = State["WorkOutName"] as string;
int i = new int();
if (RB0.IsChecked.Value)
i = 0;
else if (RB1.IsChecked.Value)
i = 1;
else if (RB2.IsChecked.Value)
i = 2;
else if (RB3.IsChecked.Value)
i = 3;
State["CheckedRB"] = i; <-------- breakpoint
与OnNavigatedTo相同:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (State.ContainsKey("Title"))
TitleTextBox.Text = State["Title"] as string; <--breakpoint
if (State.ContainsKey("CheckedRB"))
{
int i = (int)State["CheckedRB"]; <--breakpoint
if (i == 0)
RB0.IsChecked = true;
else if (i == 1)
RB1.IsChecked = true;
else if (i == 2)
RB2.IsChecked = true;
else if (i == 3)
RB3.IsChecked = true;
}
}
受保护的覆盖无效OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
基地。导航到(e);
如果(注明集装箱(“名称”))
TitleTextBox.Text=State[“Title”]as string;我尝试了你的代码,它似乎工作正常。我不知道这是否是你的情况,但请记住,如果你在应用程序中有以下导航流:
Page1 (forward navigation)-> Page2 (back navigation)-> Page1 (forward navigation)-> Page2
如果您在第一次访问第2页时将状态保存在该页中,则在再次返回第2页时将不会保留该状态,这是因为在执行反向导航时,该页将被丢弃,该页的状态字典也将被丢弃。您可以在
Page1 (forward navigation)-> Page2 (back navigation)-> Page1 (forward navigation)-> Page2