2013-04-28 71 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

相关问题