2010-05-13 4 views
35

Ich versuche, ein Formular in einer WPF-Anwendung zu erstellen, die es dem Benutzer ermöglicht, iPhone-ähnliche Gesten zu verwenden, um durch die verfügbaren Felder zu blättern. Ich habe also alle meine Formularsteuerelemente in einem StackPanel in einem ScrollViewer platziert, und die Bildlaufleiste wird wie erwartet angezeigt, wenn zu viele Elemente auf dem Bildschirm angezeigt werden.Gibt es eine Möglichkeit zum Scrollen in einem WPF ScrollViewer?

Wenn ich jedoch versuche, dies auf meinem berührungsempfindlichen Gerät zu testen, verschiebt eine Schwenkgeste (einen Finger auf die Oberfläche zu ziehen und nach oben zu ziehen) den sichtbaren Bereich nicht wie erwartet.

Wenn ich einfach eine Reihe von Elementen in eine ListView lege, funktionieren die Touch-Gesten gut. Gibt es eine Möglichkeit, die gleiche Art von Verhalten in einem ScrollViewer zu aktivieren?

ist mein Fenster wie folgt strukturiert:

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

Antwort

10

Wenn Sie .NET 4.0 gibt verwenden, ist eine coole Sache von Microsoft Team vor kurzem veröffentlicht !! Sie haben all diese netten Surface-Steuerelemente auf Win7 portiert. SurfaceScrollViewer ist wirklich cool wie iPhone One. Installieren Sie dieses Toolkit und starten Sie eine SurfaceWin7Touch Projekt von VS2010 Projektvorlage http://www.microsoft.com/en-us/download/details.aspx?id=26716

+1

Hallo Jobi, Der obige Link funktioniert nicht, könnten Sie bitte einen funktionierenden Link posten. Vielen Dank!!! – Prabhakaran

+1

Korrigiert den Link –

57

Sie sollten die angefügten Eigenschaften verwenden:

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

Der PanningMode ist standardmäßig auf "Kein" im ScrollViewer-Standardformat festgelegt, aber eingestellt auf einen anderen Wert wird Touch-Scrolling ermöglichen. Ich untersuche gerade diese Funktion in meiner App und bin auf der Suche nach einer guten Verzögerung und einem Verhältniswert ... Ich werde sie wahrscheinlich nur testen müssen, um etwas zu finden, das gut funktioniert.

+3

Beachten Sie, dass diese Eigenschaften unter Registerkarte Verschiedenes sind UND sie ** nicht in Silverlight ** verfügbar sind, nur für den Fall, dass Sie sich gefragt haben. –