wpf touch

¿Hay alguna manera de habilitar el desplazamiento táctil en un ScrollViewer de WPF?



touch (2)

Intento crear un formulario en una aplicación WPF que permita al usuario usar gestos similares a los del iPhone para desplazarse por los campos disponibles. Así que puse todos mis controles de formulario dentro de un StackPanel dentro de ScrollViewer, y la barra de desplazamiento aparece como se esperaba cuando hay demasiados elementos para mostrar en la pantalla.

Sin embargo, cuando trato de probar esto en mi dispositivo táctil, un gesto de panoramización (colocar un dedo en la superficie y arrastrarlo hacia arriba) no mueve el área visible hacia abajo como era de esperar.

Cuando simplemente coloco una cantidad de elementos dentro de un ListView, los gestos táctiles funcionan bien. ¿Hay alguna manera de habilitar el mismo tipo de comportamiento en un ScrollViewer?

Mi ventana está estructurada así:

<Window x:Class="TestTouchScrolling.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> <Grid> <ScrollViewer Name="viewer" VerticalScrollBarVisibility="Auto"> <StackPanel Name="panel"> <StackPanel Orientation="Horizontal"> <Label>Label 1:</Label> <TextBox Name="TextBox1"></TextBox> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Label 2:</Label> <TextBox Name="TextBox2"></TextBox> </StackPanel> <StackPanel Orientation="Horizontal"> <Label>Label 3:</Label> <TextBox Name="TextBox3"></TextBox> </StackPanel> <!-- Lots more like these --> </StackPanel> </ScrollViewer> </Grid>


Deberías usar las propiedades adjuntas:

  • ScrollViewer.PanningMode
  • ScrollViewer.PanningDeceleration
  • ScrollViewer.PanningRatio

El PanningMode tiene como valor predeterminado None en el estilo predeterminado de ScrollViewer, pero al establecerlo en otro valor se habilitará el desplazamiento táctil. Actualmente estoy investigando el uso de esta función en mi aplicación y estoy buscando una buena relación de desaceleración y relación ... Probablemente tendré que probarlos para encontrar algo que funcione bien.


Si está utilizando .NET 4.0, hay algo genial recientemente lanzado por el equipo de Microsoft. Transportaban todos esos agradables controles de superficie a Win7. SurfaceScrollViewer es realmente genial como el iphone uno. Instale este kit de herramientas e inicie un proyecto SurfaceWin7Touch a partir de la plantilla del proyecto VS2010 http://www.microsoft.com/en-us/download/details.aspx?id=26716