WP7 работает метод на выходе - PullRequest
1 голос
/ 11 сентября 2011

У меня есть страница в моем WP7, которая содержит несколько текстовых полей. При нажатии клавиши «Назад» запускается этот метод для сохранения содержимого:

 protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {
        var settings = IsolatedStorageSettings.ApplicationSettings;

        settings["remZone"] = txtBoxZone.Text;
        settings["remSpace"] = txtBoxSpace.Text;
    }

Проблема в том, что некоторые пользователи не нажимают кнопку «Назад», а нажимают кнопку «Домой» для выхода из приложения, поэтому содержимое не сохраняется.

Я думаю, что есть два пути, если это возможно: 1. Есть ли функция, которая запускает этот метод при нажатии кнопки home, например, onBackKeyPress. 2. Есть ли простой способ сохранить содержимое текстового поля, когда пользователь вводит его?

Спасибо.

EDIT:

решение было таким:

   protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
     {
         var settings = IsolatedStorageSettings.ApplicationSettings;

         settings["remZone"] = txtBoxZone.Text;
         settings["remSpace"] = txtBoxSpace.Text;
     }

Ответы [ 2 ]

5 голосов
/ 11 сентября 2011

Самое простое решение вашей проблемы - переопределение Page.OnNavigatingFrom метода.

больше здесь

1 голос
/ 11 сентября 2011

Backpress - не единственное событие, которое вы получаете, есть также событие App.Deactivation, которое гарантированно будет вызываться, когда ваше приложение каким-либо образом исчезнет с экрана.

На вашей странице (либо.ctor или Loaded eventhandler), прикрепите обработчик к этому событию, и в этом обработчике соберите все, что вы должны сохранить в случае закрытия.Это самый простой способ быть уверенным, что он не испарится.Просто не забудьте отсоединить этот обработчик на Page.Unloaded, иначе вы сильно потеряете память / ресурсы !!

Кстати.Код

var settings = IsolatedStorageSettings.ApplicationSettings;

settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;

в некоторых случаях недостаточен.Если вам действительно нужно быть уверенным, что ваши настройки сохраняются, вы должны вручную вызвать Save () после внесения изменений:

var settings = IsolatedStorageSettings.ApplicationSettings;

settings["remZone"] = txtBoxZone.Text;
settings["remSpace"] = txtBoxSpace.Text;

settings.Save(); // think about it, you may want it!

это происходит потому, что настройки хранятся в определенных случаях, например, при выходе из приложения, захоронениии т.д. Я не помню, чтобы они были сохранены после деактивации, поэтому простое нажатие кнопки Назад не может сохранить их в ISO.Более того, если вы установите их, и приложение выйдет из строя - например, из-за необработанного исключения - или если аккумулятор / питание разрядится, или пользователь просто выключит телефон - они не будут сохранены!

...