2017-05-01 2 views
1

Ich verwende eine translateX-Manipulation in meiner App. aber wenn ich es in einem Scrollviewer verwenden möchte, funktioniert der Scrollviewer nicht mehr und scrollt nicht (ich brauche die vertikale Schiene). Was zu tun ist, um es zu beheben. MyXAML Code:UWP: Manipulation in einem Scrollviewer

<ScrollViewer>  
<Grid x:Name="MainGrid" Background="{ThemeResource AppBackgroundColor}" 
     ManipulationMode="TranslateX" ManipulationDelta="MainGrid_ManipulationDelta" ManipulationCompleted="MainGrid_ManipulationCompleted" 
     ManipulationStarted="MainGrid_ManipulationStarted" 

     > 
      <ContentControl Content="{x:Bind TheGrid,Mode=OneWay}"/> 

      <Grid.RenderTransform > 

       <TranslateTransform x:Name="myScaleTransform" /> 
      </Grid.RenderTransform> 
     </Grid> 
</ScrollViewer> 

Und mein C# Code-Behind:

#region Manipulations 
     private void MainGrid_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) 
     { 
      if (myScaleTransform.X >= 60 && e.Delta.Translation.X > 1) 
      { 
       myScaleTransform.X = 60; 
       return; 
      } 
      if (myScaleTransform.X <= -180 && e.Delta.Translation.X < 1) 
      { 
       myScaleTransform.X = -180; 
       return; 
      } 
      myScaleTransform.X += e.Delta.Translation.X; 
      lastPostition.X += e.Delta.Translation.X; 

     } 

     private void MainGrid_ManipulationCompleted(object sender, ManipulationCompletedRoutedEventArgs e) 
     { 
      if (myScaleTransform.X <= -170) return; 
      urStoryboard.Begin(); 

     } 

     private void MainGrid_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e) 
     { 
      startpoint = e.Position; 
      lastPostition = e.Position; 
     } 
    } 
    #endregion 
+1

Sie können nicht ... zumindest nicht, dass ich bewusst bin. Sobald Sie den Wert von 'ManipulationsMode' auf etwas anderes als' System' ändern, schalten Sie die direkte Bearbeitung des 'ScrollViewers' aus. – Laith

Antwort

0

Ich habe es behoben. Mein Code:

ManipulationMode="TranslateX,System" 
0

Leider gibt es keine gute Lösung, wenn die ScrollViewer Bedürfnisse sowohl Gesten und Scrollen. Wenn Sie mit den Gesten des Benutzers umgehen möchten, müssen Sie DirectManipulation deaktivieren, und das Scrollen wird ebenfalls deaktiviert. Es gibt einen Artikel, der über dieses Problem spricht, sollten Sie this lesen, um mehr zu verstehen.

Verwandte Themen