onappearing event appearing c# events xamarin xamarin.forms page-lifecycle

c# - appearing - Eventos del ciclo de vida de la página en xamarin.forms



xamarin forms navigation events (3)

Acabo de desarrollar mi primera aplicación xamarin.forms. Estoy entusiasmado con xamarin.forms, pero echo de menos varios eventos.

¿Hay algún evento de ciclo de vida de página en una página de contenido de xamarin.forms?

Sé de estos dos:

protected override void OnAppearing() { } protected override void OnDisappearing() { }

Pero el evento OnAppearing () solo se dispara una vez. En Android, cuando presiono el botón de inicio y vuelvo a mi aplicación, este evento no vuelve a activarse.

¿Existe alguna solución para esto (como OnNavigatedTo en WindowsPhone-pages)?

Gracias.


Esto es trabajo para mí. Xamarin.Forms 2.0 y superiores. Cada vez que vuelvas a esta página de CP , se Appearing Evento que aparece.

public CP:ContentPage { //.... public CP() { this.Appearing += CP_Appearing ; //... } private void CP_Appearing(object sender, EventArgs e) { Debug.WriteLine("*************HALLO******WELCOME BACK."); } }


Por lo tanto, el evento OnAppearing se OnAppearing cuando aparece su página. Es decir, ha navegado a esa página o ha regresado a esa página desde otra en la Pila. Actualmente no hay eventos del Page Lifecycle como puede ver en la documentación de la API

Creo que de lo que está hablando es si no pone su aplicación en modo de suspensión y vuelve a navegar en ella. OnAppearing evento OnAppearing no se OnAppearing . Esto se debe a que su página no apareció porque ya estaba allí, la aplicación estaba simplemente dormida.

Lo que está buscando es el App Lifecycle la App Lifecycle que incluye métodos como:

protected override void OnStart() { Debug.WriteLine ("OnStart"); } protected override void OnSleep() { Debug.WriteLine ("OnSleep"); } protected override void OnResume() { Debug.WriteLine ("OnResume"); }

Luego puede usar el evento OnResume para hacer lo que está buscando.

Ese Documento Xamarin incluye los cambios que se deben realizar en los proyectos antiguos de Xamarin para acceder a estos eventos. Por ejemplo, su clase de App en su biblioteca compartida debe heredar de Xamarin.Forms.Application y los cambios también deben realizarse en AppDelegate y MainActivity .


También puede usar el MessagingCenter de Xamarin para realizar una coordinación arbitraria de eventos: http://developer.xamarin.com/guides/cross-platform/xamarin-forms/messaging-center/

Me he sentido frustrado por lo mismo: no tener eventos de ciclo de vida de visualización consistentes en Xamarin.Forms. Pero puede sortear algunas de esas restricciones utilizando MessagingCenter, que es solo una sencilla instalación de publicación / subcomisión.