using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
namespace Test_UniversalSerializer
{
public partial class App : Application
{
/// <summary>
/// Permet d'accéder facilement au frame racine de l'application téléphonique.
/// </summary>
/// <returns>Frame racine de l'application téléphonique.</returns>
public PhoneApplicationFrame RootFrame { get; private set; }
/// <summary>
/// Constructeur pour l'objet Application.
/// </summary>
public App()
{
// Gestionnaire global pour les exceptions non interceptées.
UnhandledException += Application_UnhandledException;
// Initialisation Silverlight standard
InitializeComponent();
// Initialisation spécifique au téléphone
InitializePhoneApplication();
// Affichez des informations de profilage graphique lors du débogage.
if (System.Diagnostics.Debugger.IsAttached)
{
// Affichez les compteurs de fréquence des trames actuels.
Application.Current.Host.Settings.EnableFrameRateCounter = true;
// Affichez les zones de l'application qui sont redessinées dans chaque frame.
//Application.Current.Host.Settings.EnableRedrawRegions = true;
// Activez le mode de visualisation d'analyse hors production,
// qui montre les zones d'une page sur lesquelles une accélération GPU est produite avec une superposition colorée.
//Application.Current.Host.Settings.EnableCacheVisualization = true;
// Désactivez la détection d'inactivité de l'application en définissant la propriété UserIdleDetectionMode de l'objet
// PhoneApplicationService de l'application sur Désactivé.
// Attention :- À utiliser uniquement en mode de débogage. Les applications qui désactivent la détection d'inactivité de l'utilisateur continueront de s'exécuter
// et seront alimentées par la batterie lorsque l'utilisateur ne se sert pas du téléphone.
PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
}
}
// Code à exécuter lorsque l'application démarre (par exemple, à partir de Démarrer)
// Ce code ne s'exécute pas lorsque l'application est réactivée
private void Application_Launching(object sender, LaunchingEventArgs e)
{
}
// Code à exécuter lorsque l'application est activée (affichée au premier plan)
// Ce code ne s'exécute pas lorsque l'application est démarrée pour la première fois
private void Application_Activated(object sender, ActivatedEventArgs e)
{
}
// Code à exécuter lorsque l'application est désactivée (envoyée à l'arrière-plan)
// Ce code ne s'exécute pas lors de la fermeture de l'application
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
}
// Code à exécuter lors de la fermeture de l'application (par exemple, lorsque l'utilisateur clique sur Précédent)
// Ce code ne s'exécute pas lorsque l'application est désactivée
private void Application_Closing(object sender, ClosingEventArgs e)
{
}
// Code à exécuter en cas d'échec d'une navigation
private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// Échec d'une navigation ; arrêt dans le débogueur
System.Diagnostics.Debugger.Break();
}
}
// Code à exécuter sur les exceptions non gérées
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
{
if (System.Diagnostics.Debugger.IsAttached)
{
// Une exception non gérée s'est produite ; arrêt dans le débogueur
System.Diagnostics.Debugger.Break();
}
}
#region Initialisation de l'application téléphonique
// Éviter l'initialisation double
private bool phoneApplicationInitialized = false;
// Ne pas ajouter de code supplémentaire à cette méthode
private void InitializePhoneApplication()
{
if (phoneApplicationInitialized)
return;
// Créez le frame, mais ne le définissez pas encore comme RootVisual ; cela permet à l'écran de
// démarrage de rester actif jusqu'à ce que l'application soit prête pour le rendu.
RootFrame = new PhoneApplicationFrame();
RootFrame.Navigated += CompleteInitializePhoneApplication;
// Gérer les erreurs de navigation
RootFrame.NavigationFailed += RootFrame_NavigationFailed;
// Garantir de ne pas retenter l'initialisation
phoneApplicationInitialized = true;
}
// Ne pas ajouter de code supplémentaire à cette méthode
private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e)
{
// Définir le Visual racine pour permettre à l'application d'effectuer le rendu
if (RootVisual != RootFrame)
RootVisual = RootFrame;
// Supprimer ce gestionnaire, puisqu'il est devenu inutile
RootFrame.Navigated -= CompleteInitializePhoneApplication;
}
#endregion
}
}