首页 > 解决方案 > 滑动浏览以前的图像

问题描述

我有一个使用 VS2017 在 Xamarin 中开发的应用程序。我有一个用户用来添加图像的页面。

在此处输入图像描述

从屏幕截图中可以看出,用户单击按钮每天最多添加六张图像。

我想要做的是从左向右滑动以动态地回到过去。这意味着我将通过一次滑动显示昨天的图像,然后通过另一次滑动显示前一天的图像,依此类推。

我正在考虑使用轮播,但如果我有几个月的图像,那将是巨大的。我已经设法通过使用日期时间选择器让它工作,但客户想要刷卡!!!

在研究和寻找解决方案方面,我真的不知道从哪里开始,所以任何指针都会受到很大的欢迎。

总而言之,我希望能够通过从左向右滑动然后通过从右向左滑动向前移动来回到过去。

TIA

标签: c#xamlxamarin.formsxamarin.android

解决方案


您可以使用 Swipe 声明自定义视图。

public class SwipeContainer : ContentView
{
    public event EventHandler<SwipedEventArgs> Swipe;

    public SwipeContainer()
    {
        GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Left));
        GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Right));
        GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Up));
        GestureRecognizers.Add(GetSwipeGestureRecognizer(SwipeDirection.Down));
    }

    SwipeGestureRecognizer GetSwipeGestureRecognizer(SwipeDirection direction)
    {
        var swipe = new SwipeGestureRecognizer { Direction = direction };
        swipe.Swiped += (sender, e) => Swipe?.Invoke(this, e);
        return swipe;
    }
}

然后在您的页面中:

<ContentPage ...>
    <StackLayout>
        <local:SwipeContainer Swipe="OnSwiped">
        </local:SwipeContainer>
    </StackLayout>
</ContentPage>

并在代码隐藏中处理 OnSwiped 事件:

void OnSwiped(object sender, SwipedEventArgs e)
{
    switch (e.Direction)
    {
        case SwipeDirection.Left:
            // Handle the swipe
            break;
        case SwipeDirection.Right:
            // Handle the swipe
            break;
        case SwipeDirection.Up:
            // Handle the swipe
            break;
        case SwipeDirection.Down:
            // Handle the swipe
            break;
    }
}

推荐阅读