禁用枢轴中的循环滚动

Posted

技术标签:

【中文标题】禁用枢轴中的循环滚动【英文标题】:Disable circular scrolling in pivot 【发布时间】:2015-12-14 02:32:39 【问题描述】:

我有一个 Win RT 应用程序,Windows phone 8.1 带有枢轴控制。

我想禁用循环滚动轴;当最后一项可见时,用户不能立即滚动到第一项,它必须转到上一项。

而当第一项可见时,只能到第二项;无法滚动到最后一个。

有可能吗?

【问题讨论】:

【参考方案1】:

我想实现这样的目标,但这真的很难。您可以使用 FlipView 控件代替 Pivot。在我看来,这是唯一的方法。但是如果你真的想要pivot,你可以订阅SelectionChangedEvent 并手动检查实际索引并更改它,如下所示:

public sealed partial class MainPage : Page

    private int _selectedIndex = 0;

    public MainPage()
    
        this.InitializeComponent();

        this.NavigationCacheMode = NavigationCacheMode.Required;
        this.Loaded += OnLoaded;
    

    private void OnLoaded(object sender, RoutedEventArgs e)
    
        _selectedIndex = MyPivot.SelectedIndex;
        MyPivot.SelectionChanged += OnSelectionChanged;
    

    private void OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    
        if(_selectedIndex == 0 && MyPivot.SelectedIndex == MyPivot.Items.Count-1)
        
            ChangeSelectedIndex(_selectedIndex);
            return;
        

        if(_selectedIndex == MyPivot.Items.Count-1 && MyPivot.SelectedIndex == 0)
        
            ChangeSelectedIndex(_selectedIndex);
            return;
        

        _selectedIndex = MyPivot.SelectedIndex;
    

    private void ChangeSelectedIndex(int index)
    
        Window.Current.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
        
            MyPivot.SelectedIndex = index;
        );
    

检查一下,但这不是一个好的解决方案,因为当我们试图从最后一个元素转到第一个元素时,我们会有奇怪的视觉效果:)

【讨论】:

谢谢 :) 我也试过这个答案,没有用。将其更改为 FlipView 并工作。

以上是关于禁用枢轴中的循环滚动的主要内容,如果未能解决你的问题,请参考以下文章

电视 dpad 焦点中的水平回收视图在快速滚动时循环

如何在循环中垂直滚动div内容,如php页面中的新闻提要

让div标签里的内容上下循环滚动

带有滚动窗口的 Pandas Dataframe 枢轴

向上滚动时动态设置 UITextView 排除路径会导致无限循环

3秒滚动一次,且无缝循环滚动,用css3怎么实现