c# - Evitar deslizar entre elementos Pivot
windows-phone-7 windows-phone-8 (3)
Entiendo que esta pregunta se ha hecho antes , pero nunca se ha respondido para Windows Phone 8.
En Windows Phone 7, fue posible establecer isHitTestVisible = false
en el elemento Pivot
base para evitar que PivotItem se desplace al deslizar sobre ciertos elementos, como los controles deslizantes y los cuadros de texto. Sin embargo, en Windows Phone 8, el Pivot se desplaza antes de que se ManipulationStarted
evento ManipulationStarted
(o incluso los eventos del objeto Touch
). Esto significa que no se puede evitar el desplazamiento entre Pivotes escuchando ManipulationStarted en ciertos Controles como uno podría hacerlo en Windows Phone 7.
¿Hay alguna manera de desactivar el desplazamiento sobre ciertos elementos, o incluso ciertas secciones de la pantalla?
Sugiero que utilices WP Silverlight Tolkit, que proporcionen buenos eventos de gestos y que tu evento sea WhenFlicked ().
xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit"
<toolkit:GestureService.GestureListener>
<toolkit:GestureListener Flick="WhenFlicked"/>
</toolkit:GestureService.GestureListener>
Función:
if (e.Direction.ToString() == "Horizontal") //Left or right
{
if (e.HorizontalVelocity > 0) //Right
{
Pivot.CurrentItem=Pivot.CurrentItem+1; //don''t remember the code for changing the page...
}
else //Left
{
Pivot.CurrentItem=Pivot.CurrentItem-1;
}
}
También intenté escribir mi evento de deslizamiento, pero este es mucho mejor y no desencadena eventos de elementos colocados en la página. Buena suerte
Si su problema real es que el Pivot traga eventos de manipulación para el mapa / control deslizante / etc. controles, intente configurar UseOptimizedManipulationRouting="False"
.
MSDN tiene una explicación más larga de esta propiedad.
De lo contrario, el enfoque correcto es usar Pivot.IsLocked="True"
.
Para UWP, quería usar Pivot más como control de pestañas, así que debía anular el estilo de pivote y hay un elemento Pivot Panel, por lo que si desactivamos ManipulationMode = None, el deslizamiento se desactivará y funcionará más como pestañas.
<PivotPanel x:Name="Panel" VerticalAlignment="Stretch" ManipulationMode="None">