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
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();
}
{
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();
}
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) :
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;
}
}
{
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;
}
}
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 :
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");
}
}
}
{
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");
}
}
}