在 SelectionChanged 事件中将 Pivot Selection 设置为另一个
Set Pivot Selection to another in SelectionChanged event
当从项目[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 或在导航开始之前触发事件的另一种方法吗?
在将索引设置为零之前稍作延迟。
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);
你可以通过减少延迟时间来优化这个。
当从项目[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 或在导航开始之前触发事件的另一种方法吗?
在将索引设置为零之前稍作延迟。
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);
你可以通过减少延迟时间来优化这个。