async void OnFocusChanged(object?sender, FocusManager.FocusChangedEventArgs e) { if (e.Current == null) { return; } if (DrawerViewGroup.FindDescendantByID(e.Current.ID) != null) { await OpenAsync(true); } else if (ContentViewGroup.FindDescendantByID(e.Current.ID) != null) { await CloseAsync(true); } }
Task ResizeDrawerAsync(double start, double end) { var tcs = new TaskCompletionSource <bool>(); var animation = new Animation(v => { var r = start + ((end - start) * v); ContentViewGroup.UpdatePosition(new Point(r, 0)); DrawerViewGroup.UpdateSize(new Size(r, Size.Height)); }, easing: Easing.Linear); animation.Commit(this, "ResizeDrawer", length: 200, finished: (l, c) => { ContentViewGroup.UpdatePosition(new Point(end, 0)); DrawerViewGroup.UpdateSize(new Size(end, Size.Height)); tcs.SetResult(true); }); return(tcs.Task); }