using System.Linq; using TINK.View.Map; using TINK.ViewModel.Map; using Xamarin.Forms; namespace TINK { public static class BackdoorMethodHelpers { public static void DoTapPage(string stationId ) { Serilog.Log.Information($"Request via backdoor to tap station {stationId}."); var currentPage = GetCurrentPage(); var mapPageViewModel = (currentPage as MapPage)?.BindingContext as MapPageViewModel; if (mapPageViewModel == null) { Serilog.Log.Error($"Request via backdoor to tap station {stationId} aborted because current page is not of expected type {typeof(MapPage).Name}. Type detected is {currentPage.GetType().Name}."); return; } Serilog.Log.Information($"Invoking member to tap."); mapPageViewModel?.OnStationClicked(stationId); } /// Gets the current page assumed that app is master detail page. /// static Page GetCurrentPage() { return (Application.Current.MainPage as MasterDetailPage)?.Detail.Navigation.NavigationStack.LastOrDefault(); } } }