2017-05-01 14 views
1

私は自分のアプリケーションでtranslateX操作を使用しています。しかし、私がscrollviewerでそれを使用したい場合、scrollviewerは動作を停止し、スクロールしません(私は垂直のレールが必要です)。 修正するにはどうすればいいですか? MyXAMLコード:UWP:スクロールビューアでの操作

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

そして、私のC#の分離コード:ScrollViewerニーズスクロールやジェスチャー両方場合

#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

あなたは...少なくとも私が認識していることはできません。 'ManipulationMode'の値を' System'以外の値に変更すると、 'ScrollViewer'の直接操作は無効になります。 – Laith

答えて

0

私はそれを固定しました。 私のコード:

ManipulationMode="TranslateX,System" 
0

は残念ながら良い解決策はありません。ユーザーのジェスチャーを処理する場合は、DirectManipulationを無効にする必要があります。これによってスクロールも無効になります。 この問題についての記事があります。詳しくはthisをご覧ください。

関連する問題