/// <summary> /// force to change mainPage, so user can't go back never /// </summary> /// <param name="app"> /// </param> /// <param name="page"> /// </param> /// <returns> /// </returns> //https://forums.xamarin.com/discussion/26870/changing-root-from-a-navigation-page public static async Task ChangeMainPage(this ICustomLayout app, Page page) { var root = app.NavPage.Navigation.NavigationStack[0]; app.NavPage.Navigation.InsertPageBefore(page, root); await PopToRootAsync(app.NavPage); }
/// <summary> /// MvvmMessagingCenter initializer /// </summary> /// <param name="subcriber"> /// subcriber ICustomLayout /// </param> public static void Init(ICustomLayout subcriber) { if (_currentPage != null) { MessagingCenter.Unsubscribe <ICustomLayout, Exception>(_currentPage, MessagingCenterMessage.ExceptionOccurred); } lock (Sync) _currentPage = subcriber; MessagingCenter.Subscribe <ICustomLayout, Exception>(subcriber, MessagingCenterMessage.ExceptionOccurred, OnAppExceptionOccurred); }
/// <summary> /// custom event subcriber /// </summary> /// <param name="subcriber"> /// subcriber ICustomLayout /// </param> /// <param name="message"> /// type of MessagingCenterMessage class /// </param> public static void SubcribeIncomingEvent(ICustomLayout subcriber, string message) { MessagingCenter.Unsubscribe <ICustomLayout, MvvmMessagingCenterEventArgs>(subcriber, message); MessagingCenter.Subscribe <ICustomLayout, MvvmMessagingCenterEventArgs>(subcriber, message, MessagingCenterIncomingEvents); }
/// <summary> /// </summary> /// <param name="sender"> /// sender ICustomLayout /// </param> /// <param name="message"> /// type of MessagingCenterMessage class /// </param> /// <param name="Event"> /// custom object (we can cast it after handling) /// </param> public static void SendIncomingEvent(ICustomLayout sender, string message, object Event) { MessagingCenter.Send <ICustomLayout, MvvmMessagingCenterEventArgs>(sender, message, new MvvmMessagingCenterEventArgs(message, Event)); }
/// <summary> /// </summary> /// <param name="sender"> /// sender ICustomLayout /// </param> /// <param name="exp"> /// exception which occurs on run-time /// </param> public static void SendException(ICustomLayout sender, Exception exp) { MessagingCenter.Send <ICustomLayout, Exception>(sender, MessagingCenterMessage.ExceptionOccurred, exp); }
public override void OnIncomingEvents(ICustomLayout sender, MvvmMessagingCenterEventArgs args) { object obj = args.Cast <object>(); //custom caster DisplayAlert("CustomEvent", args.MessageId + " " + obj.ToString(), "OK"); }
public virtual void OnIncomingEvents(ICustomLayout sender, MvvmMessagingCenterEventArgs args) { }