我有一个Win RT应用程序,带有枢轴控制的Windows Phone 8.1。
我想禁用循环滚动轴;当最后一项可见时,用户不能立即滚动到第一项,它必须转到上一项。
当第一个项目可见时,它只能进入第二个项目;不能通过滚动来转到最后一个。
有可能吗?
答案 0 :(得分:2)
我想要达到这样的目标,但这真的很难。您可以使用 FlipView 控件来代替 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;
});
}
}
检查一下,但这不是一个好的解决方案,因为当我们尝试从最后一个元素到第一个元素时,我们会产生奇怪的视觉效果:)