2

Windows Phone 8 アプリで作業している間、ユーザーがピボットをナビゲートすることを制限する必要があります。たとえば、ユーザーが 2 番目のアイテムを選択するまでは、最初の 2 つのアイテムのみが使用可能であり、次に 3 番目のアイテムがロック解除されます。

私はいくつかのアプローチを試しましたが、それらはすべて 1 つのことにつまずきます。イベント ハンドラー内で pivot.SelectedIndex (または pivot.SelectedItem) を設定しても、ピボットの視覚的表現は変わりません。

私のアプローチには何が欠けていますか?

これは、私が試したバリアントの1つからのサンプルコードです...

    private void ReservationPivot_UnloadingPivotItem(object sender, PivotItemEventArgs e)
    {

        if (previousSelectedIndex != ((Pivot)sender).Items.IndexOf(e.Item) && !pivotRedirect)
            previousSelectedIndex = ((Pivot)sender).Items.IndexOf(e.Item);
        else if (previousSelectedIndex == ((Pivot)sender).Items.IndexOf(e.Item))
            return;

        object tmp;

        PhoneApplicationService.Current.State.TryGetValue("PickupAddress", out tmp);

        if (e.Item == ((Pivot)sender).Items[1] && tmp == null && !pivotRedirect)
        {
            MessageBox.Show("Please, select pickup point!");
            pivotRedirect = true;
            ((Pivot)sender).SelectedIndex = previousSelectedIndex;
            ((Pivot)sender).SelectedItem = ((Pivot)sender).Items[1];
            return;
        }

        PhoneApplicationService.Current.State.TryGetValue("DropOffAddress", out tmp);

        if (e.Item == ((Pivot)sender).Items[2] && tmp == null && !pivotRedirect)
        {
            MessageBox.Show("Please, select dropoff point!");
            pivotRedirect = true;
            ((Pivot)sender).SelectedIndex = previousSelectedIndex;
            ((Pivot)sender).SelectedItem = ((Pivot)sender).Items[2];
            return;
        }

        if (pivotRedirect)
        {
            if (((Pivot)sender).SelectedIndex != previousSelectedIndex)
            {
                pivotRedirect = false;
                ((Pivot)sender).SelectedIndex = previousSelectedIndex;
            }

        }


    }
4

1 に答える 1