2010-05-13 8 views
35

Estoy tratando de crear un formulario en una aplicación WPF que permita al usuario usar gestos similares al 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.¿Hay alguna manera de habilitar el desplazamiento táctil en un ScrollViewer de WPF?

Sin embargo, cuando intento 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 un número 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 se estructura de la siguiente manera:

<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> 

Respuesta

10

Si está utilizando .NET 4.0, hay una cosa fresca publicado recientemente por el equipo de Microsoft !! Transportaban todos esos agradables controles de superficie a Win7. SurfaceScrollViewer es realmente genial como el iphone uno. Instalar esta herramienta y comenzar un proyecto de plantilla de proyecto SurfaceWin7Touch VS2010 http://www.microsoft.com/en-us/download/details.aspx?id=26716

+1

Hola Jobi, El enlace de arriba no está funcionando, ¿podría por favor publicar un enlace de trabajo. ¡¡¡Gracias!!! – Prabhakaran

+1

Corregido el enlace –

57

Debe utilizar las propiedades adjuntas:

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

PanningMode está predeterminado en None en el estilo predeterminado de ScrollViewer, pero configurándolo a otro valor 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.

+3

Tenga en cuenta que estas propiedades se encuentran en la pestaña 'Varios' Y ** no están disponibles en Silverlight **, en caso de que se lo pregunte. –

Cuestiones relacionadas