扫过以前的图像

时间:2018-12-29 13:00:58

标签: c# xaml xamarin.forms xamarin.android

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

enter image description here

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

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

我当时正在考虑使用轮播,但是如果我有几个月的图像,那将是巨大的。我已经通过使用日期时间选择器设法使其正常运行,但是客户希望滑动!!!

我真的不知道从哪里开始研究和找到解决方案,因此任何指尖都会受到欢迎。

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

TIA

1 个答案:

答案 0 :(得分:1)

您可以使用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;
    }
}