2013-04-28 3 views
0

Я пишу приложение для гольфа. Каждый человек вводит свой счет в текстовое поле для каждого отверстия, а затем может перейти на другую страницу. Проблема, с которой я столкнулась, заключается в том, что я хочу, чтобы числа оставались там, когда я нажимаю на другую страницу, а затем возвращаюсь на эту страницу. Как это может быть сделано?Как сохранить текстовые данные при навигации и вернуться на страницу

Это мой код для моих текстовых и текстовых блоков:

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

+0

Было бы полезно увидеть больше кода, а именно код, показывающий, что вы переходите на следующую страницу. Также вы можете подробнее описать, как вы меняете страницы. Я не могу советоваться, пока не увижу больше. – PhoenixLament

ответ

2

страница конкретизируется при переходе к нему (предполагается, что вы работает на Silverlight). Когда вы перейдете от него, состояние будет сохранено в стеке. Если вы перейдете назад (вызывая метод GoBack в классе NavigationService), страница будет возобновлена ​​с его состоянием без вызова конструктора.

Однако, если вы уйдете от существующей страницы, и повторно перейти на страницу с помощью вызова метода Navigate, новый экземпляр страницы экземпляра, и, таким образом, конструктор будет называться снова.

Смотрите также: Windows phone 7 - the page life cycle

Это означает, что если вы используете метод Navigate все ваши поля пусты, потому что новый экземпляр страницы создается. Если вы хотите сохранить состояние элемента управления TextBlock, вам необходимо временно сохранить содержимое. Вы можете использовать IsolatedStorageSettings для этой цели, добавив следующее, используя оператор:

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

Опубликованные фрагменты кода не являются полными. Вы можете получить хороший образец использования IsolStorage в действии прямо здесь: IsolatedStorage Sample

Смежные вопросы