Windows 10 UWP: невозможно остановить зацикливание управления поворотом

Я пытаюсь остановить зацикливание Pivot Control в своем приложении Windows 10 UWP. Я нигде не нашел решения для этого.

Кто-нибудь знает об этом, чтобы остановить циклическое управление поворотом.

Также я хочу остановить прямую навигацию. Предположим, у нас есть 6 сводных элементов в моем сводном элементе, и я не хочу переходить непосредственно к сводному элементу 1 к сводному элементу 4. Это должен быть пошаговый процесс, т. е. от сводного элемента 1 к сводному элементу 2 или от сводного элемента 2 к сводному элементу 3.

Я пытался сделать при выборе Changed Event of Pivot Control, но у меня это не сработало.

var currentPivot = ((Pivot)sender);
var count = e.AddedItems.Count;

if ((currentPivot.SelectedIndex) > count)
{
    Pager.SelectedIndex = count - 1;
}

Любой ответ будет оценен!


person Vedank Kulshrestha    schedule 27.10.2015    source источник
comment
Я думаю, ты не можешь. Вы можете использовать FlipView или горизонтальный ListView, но вам нужно будет воссоздать сводные заголовки самостоятельно.   -  person Joseph    schedule 27.10.2015


Ответы (4)


Начиная с SDK 14393, Win10 1607, теперь это возможно:

<Pivot IsHeaderItemsCarouselEnabled="False"/>
person Mapplesoft    schedule 29.05.2019

Если вы не хотите зацикливаться, вы можете просто использовать FlipView и изменить его стиль, чтобы он выглядел как свод.

person Festyk    schedule 27.10.2015
comment
мы не можем достичь с помощью поворотного управления? - person Vedank Kulshrestha; 27.10.2015
comment
Я не знаю никакого способа, который позволит вам сделать это в Pivot. - person Festyk; 27.10.2015

Я сделал это таким образом:

  1. Изменить основной режим манипулирования ManipulationMode="TranslateX"
  2. Добавьте обработчики ManipulationDelta и ManipulationCompleted.

Мой свод теперь выглядит так:

<Pivot ManipulationMode="TranslateX" x:Name="testPivot" ManipulationDelta="testPivot_ManipulationDelta" ManipulationCompleted="testPivot_ManipulationCompleted">
    <PivotItem Header="Page1" ></PivotItem>
    <PivotItem  Header="Page2"></PivotItem>
    <PivotItem  Header="Page3"></PivotItem>
</Pivot>
  1. Реализовать обработчики.

Мои выглядят так:

double xDelta = 0;
private void testPivot_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e)
{
    xDelta += e.Delta.Translation.X;
}

private void testPivot_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e)
{
    if(xDelta > 0)
    {

        if (testPivot.SelectedIndex > 0)
            testPivot.SelectedIndex--;
    }
    else
    {
        if(xDelta < 0)
            if (testPivot.SelectedIndex < testPivot.Items.Count() - 1)
                testPivot.SelectedIndex++;

    }
    xDelta = 0;
    e.Handled = true;
}
  1. Теперь вы можете захотеть добавить анимацию между изменениями поворотных элементов или внести некоторые другие корректировки.
person Sergiu Cojocaru    schedule 27.10.2015
comment
Я пытался, но не работал. обработчик событий не вызывается. Он все еще зацикливает элементы сводки. - person Vedank Kulshrestha; 27.10.2015
comment
Я создал для вас простой пример на github, который показывает, как это работает: github.com/bl00dra1n/PivotExample - person Sergiu Cojocaru; 28.10.2015
comment
Да, я попытался запустить ваше приложение. Это не сработало. Я все еще могу зациклить элемент поворота. - person Vedank Kulshrestha; 29.10.2015

используйте этот код. Я надеюсь, что это поможет полной логике для необходимости.

Здесь Конструктор страницы:

    public PagePivot()
        {
            InitializeComponent();
            pivot.SelectionChanged += new SelectionChangedEventHandler(pivot_SelectionChanged); 
        }

Изменен прослушиватель событий выбора сводной точки:

 if (pivot.SelectedIndex == 0 && previousSelectedIndex == <number Of screens - 1>)
            pivot.SelectedIndex = <number Of screens - 1>;
        previousSelectedIndex = pivot.SelectedIndex;
person Pratius Dubey    schedule 27.10.2015