[英]Passing data between multiple forms
我正在創建WindowsPhone應用程序,(目前)我有三個頁面。 Page1,Page2和Page3。 Page1有兩(2)個文本框,分別接受第一名和姓氏txtFN和txtLN以及一個按鈕。 該按鈕將帶您到form2,詢問您昵稱。 那有一個文本框和一個按鈕。 當用戶單擊該按鈕時,它將采用具有文本塊的form3。 用戶在Form2中輸入的昵稱,在Form3中顯示在文本塊上。 我已經把那部分弄對了。 現在,我正在嘗試執行以下操作:如果用戶在昵稱部分中未輸入任何內容,我想在表格3中顯示名字。 這是我的form2-> form3事件的代碼:
在form2中:
private void Button_Click(object sender, RoutedEventArgs e)
{
Frame.Navigate(typeof(Page4_phone_Number_extraction), "Alright " + Texbox_nickname_extraction.Text + "!");
}
在form3中
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Textblock_nickname_display.Text = e.Parameter.ToString();
}
這就像一個魅力。
再說一遍,對於我的一生,如果沒有用戶輸入,我想不出如何在form3中顯示名字。
一種選擇是將數據存儲在本地應用程序設置中,例如:
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變量。
不用說,第一種方法更簡單。
Microsoft的文檔包含一個示例 , 該示例表明您不應該像以前那樣使用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.";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.