protected virtual async void MenuTapped(object sender, EventArgs e) { if (!IsMasterDisplayed) { MasterStack.IsVisible = true; await MasterStack.LayoutTo(new Rectangle(100 - MasterStack.TranslationX, 0, 600, 600), 250U, Easing.SinOut); IsMasterDisplayed = true; } else { MasterStack.IsVisible = false; await MasterStack.LayoutTo(new Rectangle(MasterStack.TranslationX - 100, 0, 600, 600), 250U, Easing.SinOut); IsMasterDisplayed = false; } //var mainPage = Application.Current.MainPage as MasterDetailPage; //if (mainPage != null) //{ // mainPage.IsPresented = !mainPage.IsPresented; // //DarkStack.IsVisible = mainPage.IsPresented; // //mainPage.IsPresentedChanged += (o, args) => // //{ // // DarkStack.IsVisible = mainPage.IsPresented; // //}; //} }
public virtual async void MenuSwipe(object sender, PanUpdatedEventArgs e) { double totalLeftX = 0; double totalRightX = 0; if (e.StatusType == GestureStatus.Running || e.StatusType == GestureStatus.Started) { XPoints.Add(e.TotalX); totalLeftX = -1 * MasterStack.TranslationX / 1.5 + 100 + e.TotalX; totalRightX = MasterStack.TranslationX / 1.5 + 100 + e.TotalX; if (totalLeftX < -700 || totalRightX > 700 || e.TotalX.Equals(0)) { return; } if (e.TotalX < 0) { MasterStack.IsVisible = true; await MasterStack.LayoutTo( new Rectangle(-1 * MasterStack.TranslationX / 1.5 + 100 + e.TotalX, 0, 600, 600), 250U, Easing.SinOut); XPoints.RemoveAll(x => x > 0); IsMasterDisplayed = true; } else { MasterStack.IsVisible = true; await MasterStack.LayoutTo( new Rectangle(MasterStack.TranslationX / 2 + 100 + e.TotalX, 0, 600, 600), 250U, Easing.SinOut); XPoints.RemoveAll(x => x < 0); IsMasterDisplayed = true; } return; } if (e.StatusType == GestureStatus.Completed) { if (IsMasterDisplayed) { MasterStack.IsVisible = true; await MasterStack.LayoutTo(new Rectangle(100 - MasterStack.TranslationX, 0, 600, 600), 250U, Easing.SinOut); XPoints.Clear(); IsMasterDisplayed = true; } else { MasterStack.IsVisible = false; await MasterStack.LayoutTo(new Rectangle(MasterStack.TranslationX - 100, 0, 600, 600), 250U, Easing.SinOut); XPoints.Clear(); IsMasterDisplayed = false; } } }