using System; using Xamarin.Forms; namespace MobileApp1.Views { public class ContentViewHelper { public static ContentPage GetContentPage(ContentView view) { if (view == null) return null; Element item = view.Parent; while (true) { if (item == null) break; if (item is ContentPage) break; item = item.Parent; } return (item as ContentPage); } public static T GetContentPage(ContentView view) { if (view == null) return default(T); Element item = view.Parent; while (true) { if (item == null) break; if (item is T) break; item = item.Parent; } try { return (T)Convert.ChangeType(item, typeof(T)); } catch (InvalidCastException) { return default(T); } } public static App GetApp(ContentView view) { if (view == null) return null; Element item = view.Parent; while (true) { if (item == null) break; if (item is App) break; item = item.Parent; } return (item as App); } public static Application GetApplication(ContentView view) { if (view == null) return null; Element item = view.Parent; while (true) { if (item == null) break; if (item is Application) break; item = item.Parent; } return (item as Application); } public static void SetMainPage(ContentView view, Page page) { if (view == null) return; if (view.Parent == null) return; if (page == null) return; Application rs = GetApplication(view); if (rs == null) { return; } Device.BeginInvokeOnMainThread(() => { //rs.MainPage = new NavigationPage(new PasswordResetPage()); rs.MainPage = page; }); } public static async void PushMainPageNavigation(ContentView view, Page page) { if (view == null) return; if (view.Parent == null) return; if (page == null) return; Application rs = GetApplication(view); if (rs == null) { return; } await rs?.MainPage.Navigation.PushAsync(page); } } }