我正在创建一个WindowsPhone应用程序(目前)我有三个页面。第1页,第2页和第3页。 Page1有两(2)个文本框,可以接受名字和姓氏,txtFN和txtLN以及一个按钮。该按钮将您带到form2,它会询问您的昵称。那有一个文本框和一个按钮。当用户单击该按钮时,它将获取具有文本块的form3。用户在form2中输入的昵称显示在text3上的text3中。我得到了那个部分是正确的。现在,我试图这样做:如果用户没有在昵称部分输入任何内容,我想在表单3中显示第一个名字。这是我的form2-> form3事件的代码:
in form2:
private void Button_Click(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(Page4_phone_Number_extraction), "Alright " + Texbox_nickname_extraction.Text + "!");
}
in form3,
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Textblock_nickname_display.Text = e.Parameter.ToString();
}
这就像一个魅力......
同样,对于我的生活,如果没有用户输入,我无法想到如何在form3中显示名字。
答案 0 :(得分:1)
一种选择是将数据存储在本地应用设置中,例如:
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
localSettings.Values["FirstName"] = txtFN.txt;
第1页。
然后,您可以在第3页中将其解压缩为:
Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
Textblock_nickname_display.Text=localSettings.Values["FirstName"].ToString();
您也可以使用OnNavigatedFrom()来实现相同的功能,但它涉及更多工作:
在第1页:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Page2 destinationPage = e.Content as Page2;
if (destinationPage != null)
{
destinationPage.FirstName = txtFN.Text;
}
}
确保在Page2中有string FirstName {get;set;}
。现在使用相同的方法将变量发送到Page3。然后,您可以在Page3中使用FirstName变量。
毋庸置疑,第一种方法更简单。
答案 1 :(得分:0)
Microsoft的文档contains an example表明您不应该像您一样使用OnNavigatedTo(NavigationEventArgs e)
而是:
private void navigationHelper_LoadState(object sender, LoadStateEventArgs e)
{
string name = e.NavigationParameter as string;
if (!string.IsNullOrWhiteSpace(name))
{
tb1.Text = "Hello, " + name;
}
else
{
tb1.Text = "Name is required. Go back and enter a name.";
}
}