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.Globalization; 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; // La plantilla Aplicación vacía está documentada en http://go.microsoft.com/fwlink/?LinkId=234227 namespace Xamarin.Forms_Windows.Windows { /// /// 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 la aplicación la inicia normalmente el usuario final. Se usarán otros puntos /// se usará por ejemplo cuando la aplicación se inicie para abrir un archivo específico. /// /// Información detallada acerca de la solicitud y el proceso de inicio. protected override void OnLaunched(LaunchActivatedEventArgs e) { #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { this.DebugSettings.EnableFrameRateCounter = true; } #endif 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(); // Establecer el idioma predeterminado rootFrame.Language = ApplicationLanguages.Languages[0]; rootFrame.NavigationFailed += OnNavigationFailed; Forms.Forms.Init(e); 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 (rootFrame.Content == null) { // Cuando no se restaura la pila de navegación para navegar a la primera página, // configurar la nueva página al pasar la información requerida como parámetro // parámetro rootFrame.Navigate(typeof(MainPage), e.Arguments); } // Asegurarse de que la ventana actual está activa. Window.Current.Activate(); } /// /// Se invoca cuando se produce un error en la navegación a una página determinada /// /// 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(); } } }