Dans l’article précédent Restituer la navigation après une terminaison on a su revenir sur la bonne page de votre application. Ici on va remettre les données que l’utilisateur avait par exemple commencé à saisir.
Déclarer une variable static IsSuspending dans l’App.xaml.cs et la passer à TRUE dans l’évènement OnSupending
[cc lang= »csharp » escaped= »true » width= »600″ nowrap= »0″ line_numbers= »0″ theme= »vsdark »]
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
IsSuspending = true;
//Mémo de la page actuelle
Frame frame = Windows.Current.Content as Frame;
ApplicationData.Current.LocalSettings.Values[« NavigationState »] = frame.GetNavigationState();
deferral.Complete();
}
[/cc]
MaPage.Xaml.cs : OnNavigationFrom
Dans votre page, on va maintenant mémoriser les données dans l’évent OnNavigationFrom (on quitte la page) puis les restituer dans l’évent OnNavigationTo (On arrive sur la page) :
[cc lang= »csharp » escaped= »true » width= »600″ nowrap= »0″ line_numbers= »0″ theme= »vsdark »]
protected override void OnNavitationFrom(NavigationEventArgs e)
{
bool suspending = ((App)App.Current).IsSuspending;
if (suspending )
{
var composite = new ApplicationDataCompositeValue();
composite[« madonnee1 »] = this.textBoxName.Text;
composite[« madonnee2 »] = this.textBoxAge.Text;
ApplicationData.Current.LocalSettings.Values[« Mesdonnees »] = composite;
//On peut utiliser ça aussi :
//state[« madonnee1 »] = this.textBoxName.Text;
}
}
[/cc]
MaPage.Xaml.cs : OnNavigationTo
Et au retour de la page, si c’est une nouvelle navigation on vide par sécu le « composite » sinon on regarde s’il existe et restitue les info :
[cc lang= »csharp » escaped= »true » width= »600″ nowrap= »0″ line_numbers= »0″ theme= »vsdark »]
protected overrire void OnNavigationTo (NavigationEventArgs e)
{
if (e.NavigationMode == NavigationMode.New)
{
ApplicationData.Current.LocalSettings.Values.Remove(« Mesdonnees »);
}
else
{
if (ApplicationData.Current.LocalSettings.Values.ContainsKey(« Mesdonnees »))
{
var composite = ApplicationData.Current.LocalSettings.Values[« Mesdonnees »] as ApplicationDataCompositeValue;
this.textBoxName.Text = (string)composite[« madonnee1 »];
this.textBoxAge.Text = (string)composite[« madonnee2 »];
ApplicationData.Current.LocalSettings.Values.Remove(« Mesdonnees »);
}
}
}
[/cc]
