当我从项目[2]导航到项目[1],从项目[3]导航到项目[2]等时,我想制作一个导航到项目[0]的轴。
这是代码:
int lastIndex = 0;
private void PageChanged(object sender, SelectionChangedEventArgs e)
{
switch (MainPivot.SelectedIndex)
{
case 0:
//Do smth
break;
case 1:
//Do smth
break;
case 2:
//Do smth
break;
case 3:
//Do smth
break;
}
if (MainPivot.SelectedIndex + 1 == lastIndex)
{
MainPivot.SelectedIndex = 0;
}
lastIndex = MainPivot.SelectedIndex;
}
和XAML:
<Pivot x:Name="MainPivot" SelectionChanged="PageChanged">
<PivotItem Margin="0" Background="Red">
</PivotItem>
<PivotItem Margin="0" Background="#FF0017FF">
</PivotItem>
<PivotItem Margin="0" Background="Yellow">
</PivotItem>
<PivotItem Margin="0" Background="#FFE800FF">
</PivotItem>
</Pivot>
但是UI并没有对
做出反应MainPivot.SelectedIndex = 0;
正如我所见,在动画结束之前,pivot不会设置页面。
这是另一种在导航完成之前导航到其他PivotItem还是在导航开始之前触发事件的方法?
答案 0 :(得分:1)
在将索引设置为零之前给出一个小延迟。
int lastIndex = 0;
private async void PageChanged(object sender, SelectionChangedEventArgs e)
{
switch (MainPivot.SelectedIndex)
{
case 0:
//Do smth
break;
case 1:
//Do smth
break;
case 2:
//Do smth
break;
case 3:
//Do smth
break;
}
if (MainPivot.SelectedIndex + 1 == lastIndex)
{
await Task.Delay(50);
MainPivot.SelectedIndex = 0;
}
lastIndex = MainPivot.SelectedIndex;
}
我已经await Task.Delay(50);
你可以通过减少延迟时间来优化它。