【问题标题】:Xamarin.Forms Carousel Page Swipe Event Page ChangingXamarin.Forms 轮播页面滑动事件页面更改
【发布时间】:2018-01-24 15:17:08
【问题描述】:

我正在使用 Xamarin Form (2.5.0) 附带的轮播页面,并且希望能够检测页面何时即将更改。

每个页面都有一些验证,如果验证失败,我想阻止用户移动到下一页。目前我能看到的唯一事件是 PageChanged,这是我触发验证的地方,但是用户必须向后滑动才能看到错误消息。

有没有办法挂钩原生的滑动事件?

该应用目前面向 iOS,但最终需要支持 Android。

【问题讨论】:

    标签: c# xamarin.forms carousel


    【解决方案1】:

    我知道这有点晚了,但也许其他人也会问,所以这里有一个想法: 正如你所写,在

    protected override void OnCurrentPageChanged()    
    

    您可以了解用户何时滑动到下一页。现在,如果您对上一页进行验证,您可以返回上一页以防出现错误

    int index = Children.IndexOf(CurrentPage);
    this.CurrentPage = this.Children[index-1];
    

    这不会阻止用户离开页面(因为没有“OnSwipingStart”或其他),但用户无需手动返回即可看到错误。

    如果您乐于使用与 CarouselPage 不同的控件: 有一个 pull request 可以将 CarouselView 获取到本机 Xamarin 表单中。它有一个 Scrolled-Event 已在第一个百分比滑动时触发,因此您可以在那里执行您的操作。

    【讨论】:

    • 感谢您的回复 - 这或多或少是我实施的解决方案。如果在页面更改之前有事件,那将是更好的用户体验...
    • 我已经用 CarouselView 的链接更新了我的答案。我不确定您是卡在 CarouselPage 上还是想看看其他控件。
    • 我不仅限于 CarouselPage - CarouselView 看起来非常有趣 - 将看到它如何与我的应用程序一起使用!
    • ItemSource 属性已从 IList 更改为 IEnumerable,这意味着无法在 XAML 中设置 ItemSource。我所有的视图当前都是使用 XAML 定义的,它们需要迁移到 c#
    猜你喜欢
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多