0

アイテム[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;

ご覧のとおり、ピボットはアニメーションが終了するまでページを設定しません。

ナビゲーションが完了する前に、またはナビゲーションが開始される前にイベントが発生する前に、他の PivotItem に移動する別の方法はありますか?

4

1 に答える 1

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);減らすことでこれを最適化できます。

于 2015-05-17T05:21:03.690 に答える