using MvvmCross; using MvvmCross.ViewModels; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.ApplicationModel; using Windows.ApplicationModel.Activation; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; namespace Classic.UWP { /// /// Proporciona un comportamiento específico de la aplicación para complementar la clase Application predeterminada. /// sealed partial class App : Application { /// /// Inicializa el objeto de aplicación Singleton. Esta es la primera línea de código creado /// ejecutado y, como tal, es el equivalente lógico de main() o WinMain(). /// public App() { this.InitializeComponent(); this.Suspending += OnSuspending; } /// /// Se invoca cuando el usuario final inicia la aplicación normalmente. Se usarán otros puntos /// de entrada cuando la aplicación se inicie para abrir un archivo específico, por ejemplo. /// /// Información detallada acerca de la solicitud y el proceso de inicio. protected override void OnLaunched(LaunchActivatedEventArgs e) { Frame rootFrame = Window.Current.Content as Frame; // No repetir la inicialización de la aplicación si la ventana tiene contenido todavía, // solo asegurarse de que la ventana está activa. if (rootFrame == null) { // Crear un marco para que actúe como contexto de navegación y navegar a la primera página. rootFrame = new Frame(); rootFrame.NavigationFailed += OnNavigationFailed; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: Cargar el estado de la aplicación suspendida previamente } // Poner el marco en la ventana actual. Window.Current.Content = rootFrame; } if (e.PrelaunchActivated == false) { if (rootFrame.Content == null) { // Cuando no se restaura la pila de navegación, navegar a la primera página, // configurando la nueva página pasándole la información requerida como //parámetro de navegación //rootFrame.Navigate(typeof(MainPage), e.Arguments); var setup = new Setup(rootFrame); setup.Initialize(); var start = Mvx.Resolve(); start.Start(); } // Asegurarse de que la ventana actual está activa. Window.Current.Activate(); } } /// /// Se invoca cuando la aplicación la inicia normalmente el usuario final. Se usarán otros puntos /// /// Marco que produjo el error de navegación /// Detalles sobre el error de navegación void OnNavigationFailed(object sender, NavigationFailedEventArgs e) { throw new Exception("Failed to load Page " + e.SourcePageType.FullName); } /// /// Se invoca al suspender la ejecución de la aplicación. El estado de la aplicación se guarda /// sin saber si la aplicación se terminará o se reanudará con el contenido /// de la memoria aún intacto. /// /// Origen de la solicitud de suspensión. /// Detalles sobre la solicitud de suspensión. private void OnSuspending(object sender, SuspendingEventArgs e) { var deferral = e.SuspendingOperation.GetDeferral(); //TODO: Guardar el estado de la aplicación y detener toda actividad en segundo plano deferral.Complete(); } } }