protected async override Task OnAppearingAnimationEnd()
        {
            var translateLength = 400u;

            await Task.WhenAll(
                WineVintage.TranslateTo(0, 0, easing: Easing.SpringOut, length: translateLength),
                WineVintage.FadeTo(1),
                (new Func <Task>(async() =>
            {
                await Task.Delay(200);
                await Task.WhenAll(
                    WineVintage.TranslateTo(0, 0, easing: Easing.SpringOut, length: translateLength),
                    WineVintage.FadeTo(1));
            }))());

            await Task.WhenAll(
                CloseImage.FadeTo(1),
                CloseImage.ScaleTo(1, easing: Easing.SpringOut),
                CloseImage.RotateTo(0),
                OKButton.ScaleTo(1),
                OKButton.FadeTo(1));
        }
        protected async override Task OnDisappearingAnimationBegin()
        {
            var taskSource = new TaskCompletionSource <bool>();

            var currentHeight = FrameContainer.Height;

            await Task.WhenAll(
                WineVintage.FadeTo(0),
                OKButton.FadeTo(0));

            FrameContainer.Animate("HideAnimation", d =>
            {
                FrameContainer.HeightRequest = d;
            },
                                   start: currentHeight,
                                   end: 170,
                                   finished: async(d, b) =>
            {
                await Task.Delay(300);
                taskSource.TrySetResult(true);
            });

            await taskSource.Task;
        }