簡體   English   中英

在多種形式之間傳遞數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM