【问题标题】:How to keep textfield data when navigating away and back to page导航离开并返回页面时如何保留文本字段数据
【发布时间】:2013-04-28 18:31:10
【问题描述】:

我正在编写一个打高尔夫球的应用程序。每个人在每个洞的文本框中输入他的分数,然后选择导航到另一个页面。 我遇到的问题是,当我单击另一个页面然后返回该页面时,我希望数字保留在那里。如何做到这一点?

这是我的文本框和文本块的代码:

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();


    }

【问题讨论】:

  • 查看更多代码会很有用,即显示您切换到下一个“页面”的代码。您还可以描述更多关于您如何更改页面的信息。在我看到更多信息之前,我无法真正提供建议。
  • this 可能会有所帮助。

标签: c# arrays windows-phone-7.1 storage storing-data


【解决方案1】:

当您导航到一个页面时,它会被实例化(假设您是 在 Silverlight 上运行)。当您离开它时,该州将 保存在堆栈中。如果您向后导航(通过调用 GoBack NavigationService 类上的方法)页面将从 它的状态,无需调用构造函数。

但是,如果您离开现有页面并重新导航 通过调用 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 Sample

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多