2010-05-13 13 views
35

Próbuję utworzyć formularz w aplikacji WPF, który pozwoli użytkownikowi używać gestów podobnych do iPhone'a do przewijania dostępnych pól. Tak, umieściłem wszystkie formanty formularzy wewnątrz StackPanel wewnątrz ScrollViewer, a pasek przewijania wyświetla się zgodnie z oczekiwaniami, gdy jest zbyt wiele elementów do wyświetlenia na ekranie.Czy istnieje sposób, aby włączyć przewijanie za pomocą dotyku w przeglądarce przewijania WPF?

Jednak, gdy próbuję to przetestować na moim urządzeniu z ekranem dotykowym, gest przesuwania (umieszczenie palcem w dół na powierzchni i przeciągnięcie go w górę) nie przesuwa widocznego obszaru w dół, jak można się było spodziewać.

Kiedy po prostu umieszczam szereg elementów wewnątrz ListView, gesty dotykowe działają dobrze. Czy istnieje sposób na włączenie tego samego zachowania w ScrollViewer?

Moje okno jest skonstruowany tak:

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

Odpowiedz

10

Jeśli używasz .NET 4.0, nie jest fajne niedawno wydany przez zespół Microsoft !! Przenieśli wszystkie te ładne kontrole powierzchni do Win7. SurfaceScrollViewer jest naprawdę fajny jak iPhone. Zainstalować ten zestaw narzędzi i rozpocząć projekt SurfaceWin7Touch z VS2010 szablonu projektu http://www.microsoft.com/en-us/download/details.aspx?id=26716

+1

Witaj Jobi, Powyższy link nie działa, możesz opublikować działający link. Dziękuję Ci!!! – Prabhakaran

+1

Poprawiono link –

57

Należy użyć załączonego właściwości:

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

Domyślnym stylem panoramowania jest Brak w stylu domyślnym ScrollViewer, ale ustawienie go do innej wartości umożliwi przewijanie dotykowe. Obecnie badam korzystanie z tej funkcji w mojej aplikacji i szukam dobrej wartości opóźnienia i współczynnika ... Prawdopodobnie będę musiał przetestować je, aby znaleźć coś, co działa dobrze.

+3

Pamiętaj, że te właściwości znajdują się w zakładce "Różne", a one ** nie są dostępne w Silverlight **, na wypadek gdybyś się zastanawiał. –

Powiązane problemy