2013-04-28 69 views
0

我正在寫一個高爾夫應用程序。每個人在每個洞的文本框中輸入他的分數,然後可選擇導航到另一個頁面。 我遇到的問題是我想要數字留在那裏,當我點擊另一個頁面,然後回到那個頁面。如何才能做到這一點?如何在導航時返回頁面並保留文本字段數據

這是我爲我的文本框和的TextBlocks代碼:

private void Calculate_Click(object sender, RoutedEventArgs e) 
{ 

    int x1 = 0; 
    Int32.TryParse(textBox1.Text, out x1); 
    int x2 = 0; 
    Int32.TryParse(textBox2.Text, out x2); 
    int x3 = 0; 
    Int32.TryParse(textBox3.Text, out x3); 
    int x4 = 0; 
    Int32.TryParse(textBox4.Text, out x4); 
    int x5 = 0; 
    Int32.TryParse(textBox5.Text, out x5); 
    int x6= 0; 
    Int32.TryParse(textBox6.Text, out x6); 
    int x7 = 0; 
    Int32.TryParse(textBox7.Text, out x7); 
    int x8 = 0; 
    Int32.TryParse(textBox8.Text, out x8); 
    int x9 = 0; 
    Int32.TryParse(textBox9.Text, out x9); 


    int[] totalScore = new int[10]; 
    totalScore[0] = x1; 
    totalScore[1] = x2; 
    totalScore[2] = x3; 
    totalScore[3] = x4; 
    totalScore[4] = x5; 
    totalScore[5] = x6; 
    totalScore[6] = x7; 
    totalScore[7] = x8; 
    totalScore[8] = x9; 
    int sum = totalScore.Sum(); 
    TotalBlock.Text = sum.ToString(); 


    } 
+0

[this](http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff967548(v = vs.105) ).aspx)可能會有所幫助。 – MAV 2013-04-28 18:54:30

+0

查看更多代碼會很有用,即代碼顯示您更改爲下一個「頁面」。你也可以更詳細地描述你如何改變頁面。直到我看到更多,我才真正提供建議。 – PhoenixLament 2013-04-28 18:36:54

回答

2

,當你找到它(假設你是 Silverlight的運行)一個頁面會被實例化。當你離開它時,狀態將被保存在堆棧中。如果返回(通過調用NavigationService類的GoBack 方法),頁面將從其狀態恢復爲 ,而不調用構造函數。

但是,如果從現有的頁面導航離去,並通過調用Navigate方法重新定位 到頁, 一個全新的實例的頁面被實例化,並由此構造將會再次調用 。

參見:Windows phone 7 - the page life cycle

這意味着如果你使用的是導航的方法,因爲在創建頁面的新實例所有字段都是空的。 如果要保持TextBlock控件的狀態,則必須臨時存儲內容。您可以使用IsolatedStorageSettings爲了這個目的,通過添加以下using語句:

using System.IO.IsolatedStorage; 

現在可以保存一個字符串(你的情況TextBlock內容)的獨立存儲這樣的:

public void SaveStringObject() 
{ 
    var settings = IsolatedStorageSettings.ApplicationSettings; 
    settings.Add("myContent", "foobar"); 
} 

在導航方法中調用SaveStringObject方法後,您需要通過調用IsolatedStorageSettings.Save方法來保存設置。

如果你回來到包含可使用此代碼檢索您的TextBlock控件的內容TextBlock控件的頁面:

TotalBlock.Text = settings["myContent"].ToString(); 

張貼的代碼段是不完整的。你可以在這裏得到一個很好的使用IsolatedStorage的例子:IsolatedStorage Sample

相關問題