2016-02-24 2 views
1

J'essaie d'implémenter la reconnaissance gestuelle à l'aide des événements ManipulationStarted et ManipulationDelta dans l'application Windows 10 mobile (UW). Mais il y a un problème: ils ne tirent pas. Le problème est probablement mon affichage xaml trop compliqué (j'ai HorizontalyScrollable GridView dans ListView - et pour activer le défilement vertical, tout est compressé dans ScrollViewer). Mais j'ai essayé d'ajouter ces événements à tous les conteneurs et ils n'ont toujours pas tiré.Reconnaissance gestuelle - Les événements de manipulation ne se déclenchent pas

Quelqu'un a-t-il/connaît-il une solution? Ci-dessous ma page XAML arbre:

 <ScrollViewer Grid.Row="2" x:Name="SubscribersView" ManipulationStarted="SubscribersView_ManipulationStarted" ManipulationDelta="SubscribersView_ManipulationDelta"> 
     (......) 
        <ListView 
          Margin="0" 
          Grid.Row="0" 
          SelectionMode="None" 
          IsItemClickEnabled="True" 
          ScrollViewer.HorizontalScrollMode="Disabled" 
          ScrollViewer.VerticalScrollMode="Disabled" 
          HorizontalAlignment="Stretch" > 

        <ListView.ItemTemplate> 
         <DataTemplate> 
          <Grid> 
           (......) 
           <GridView Grid.Row="1" 
             HorizontalAlignment="Stretch" 
             Margin="-10" 
             SelectionMode="None" 
             IsItemClickEnabled="True" 
             ScrollViewer.HorizontalScrollMode="Enabled" 
             ScrollViewer.VerticalScrollMode="Disabled" 
             ScrollViewer.HorizontalScrollBarVisibility="Visible"> 

            <GridView.ItemsPanel> 
             <ItemsPanelTemplate> 
              <VirtualizingStackPanel Orientation="Horizontal"></VirtualizingStackPanel> 
             </ItemsPanelTemplate> 
            </GridView.ItemsPanel> 
           </GridView> 
          </Grid> 
         </DataTemplate> 
        </ListView.ItemTemplate> 
       </ListView> 

Répondre

0

Je trouve une solution - je ViewChanged de scrollviwer: ci-dessous est la solution

private void SubscribersView_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
      { 
       var sv = sender as ScrollViewer; 

       var verticalOffset = sv.VerticalOffset; 
       var minVerticalOffset = sv.ExtentHeight - sv.ViewportHeight; 
       var maxVerticalOffset = sv.ScrollableHeight; 

       if (maxVerticalOffset < 0 || verticalOffset == maxVerticalOffset || minVerticalOffset <= 0 || verticalOffset <= 0) 
       { 
        //reached top or bottom 
        return; 
       } 

       if (verticalOffset > previousVerticalOffset) 
       { 
        //Scroll down 
        if (!popularHidden) 
        { 
         MainImageSlideOut.Begin(); 
         popularHidden = true; 
        } 
       } 
       else 
       { 
        //Scroll up 
        if (popularHidden) 
        { 
         MainImageSlideIn.Begin(); 
         popularHidden = false; 
        } 
       } 
       previousVerticalOffset = verticalOffset; 
      }