2016-05-30 4 views
0

У меня есть приложение UWP, в котором я использую элемент управления с набором элементов поворота. Теперь мое требование - захватить салфетки вниз/вверх жесты на элемент поворота. Я сделал что-то, как показано ниже:Переопределение событий манипуляции на PivotItem

<Pivot> 
    <PivotItem Header="jdslj" ManipulationMode="All" ManipulationStarted="UIElement_OnManipulationStarted" ManipulationDelta="UIElement_OnManipulationDelta"></PivotItem> 
    <PivotItem Header="weew" ManipulationMode="All" ManipulationStarted="UIElement_OnManipulationStarted" ManipulationDelta="UIElement_OnManipulationDelta"></PivotItem> 
    <PivotItem Header="332" ManipulationMode="All" ManipulationStarted="UIElement_OnManipulationStarted" ManipulationDelta="UIElement_OnManipulationDelta"></PivotItem> 
</Pivot> 

Проблема заключается в том, когда я это делаю, он переопределяет поведение контроля поворота, и теперь я не в состоянии проведите пальцем влево/вправо, чтобы изменить пункт поворота.

Есть ли что-нибудь, что я могу сделать для достижения обоих одновременно?

+0

Я не могу воспроизвести эту проблему, ваше манипулирование может работать в части тела элемента «PivotItem», но по умолчанию «прокрутка влево/вправо, чтобы изменить элемент поворота» работает над частью заголовка «PivotItem». –

+0

Элемент поворота должен измениться, даже если вы проведите пальцем вправо/влево на «корпусе элемента». Я думаю, что если вы удалите события манипуляции, вы сможете это увидеть. – tavier

+0

О да, вы правы! Извините, я этого не заметил. –

ответ

1

Как мы уже говорили, мы можем использовать события указателя для выполнения этой работы, но только часть из них работает на мобильном устройстве в этом сценарии (на ПК они работают нормально, вы можете попробовать).

Вот мой пример:

<Grid x:Name="rootGrid" Background="White" PointerPressed="Grid_PointerEntered" 
     PointerEntered="Grid_PointerEntered" PointerMoved="Grid_PointerMoved"> 
    <Pivot x:Name="pivot"> 
     <PivotItem Header="jdslj"> 
      <TextBlock Name="textBlock" /> 
     </PivotItem> 
     <PivotItem Header="weew"> 
     </PivotItem> 
     <PivotItem Header="332"> 
     </PivotItem> 
    </Pivot> 
</Grid> 

код позади:

private double Y; 
private double deltaY; 

private void Grid_PointerEntered(object sender, PointerRoutedEventArgs e) 
{ 
    var pointer = e.GetCurrentPoint(rootGrid); 
    Y = pointer.Position.Y; 
} 

private void Grid_PointerMoved(object sender, PointerRoutedEventArgs e) 
{ 
    var pointer = e.GetCurrentPoint(rootGrid); 
    deltaY = pointer.Position.Y; 
    if ((deltaY - Y) > 30) 
    { 
     textBlock.Text = "down"; 
     Y = 0; 
     deltaY = 0; 
    } 
    else if ((Y - deltaY) > 30) 
    { 
     textBlock.Text = "up"; 
     Y = 0; 
     deltaY = 0; 
    } 
} 

Поскольку вы просили образца, я отправил этот ответ, но я еще раз хочу сказать, мои образцы работы, но не очень чувствительный.

+0

Я вижу проблему, о которой вы говорили. Так на мобильном телефоне, PointerEnter/прессованные увольняют только штраф, но PointerMoved не срабатывает, когда я пошевелить пальцем по пункту поворота. Это срабатывает, если я перемещаю палец поверх сетки (где-то чуть выше точки поворота). – tavier

+0

@AshishAgrawal, да, для чего вам нужны жесты вверх/вниз? Можем ли мы использовать другое событие для реализации этого требования? –

+0

Итак, в основном мой элемент поворота - это календарь, и он может иметь вид недели или месяц. Прокрутка вверх и вниз фактически изменит представление из месяца в неделю или из недели в месяц (в зависимости от направления салфетки). Это похоже на свертывание или расширение контроля. – tavier

Смежные вопросы