2017-09-28 1 views
0

Je développe une application UWP avec C#, je enveloppe un Image dans un ScrollView, dans le Image Je montre une page de doc, parce que la taille de la page est plus petite que l'écran, donc si je fais défiler l'écran, la vue ne changera pas, mais j'ai encore besoin de détecter l'événement de défilement, j'essaie d'utiliser **ViewChanged** ou **ViewChanging** mais ils ne sont pas appelés, je pense que c'est peut-être parce que la vue n'est pas modifiée. Quelqu'un sait-il une solution à détecter?Comment détecter le défilement si la vue n'est pas modifiée dans ScrollView en C#?

Ci-dessous fait partie de mon fichier XAML:

<ScrollViewer ViewChanging="ScrollViewChanged">   
    <Image Name="PageImage" SizeChanged="PageImage_SizeChanged"/> 
</ScrollViewer> 
+0

Il est pas évident " faites défiler l'écran "pourrait signifier. Meilleur pour faire défiler la vue. –

+0

Cela signifie faire défiler la molette ou utiliser le stylet/défilement des doigts ou utiliser la barre de défilement pour faire défiler –

+0

L'événement "ViewChanging" devrait être capable de détecter le défilement, pouvez-vous nous montrer le code s'il vous plaît? –

Répondre

-1

Vous pouvez obtenir événement molette de la souris. Espérons que le lien vous aidera: https://docs.microsoft.com/en-us/uwp/api/Windows.UI.Xaml.UIElement#Windows_UI_Xaml_UIElement_PointerWheelChanged

touch/stylo, vous pouvez vous abonner à ces événements:

   PointerPressed="ScrollViewer_PointerPressed" 
       PointerMoved="ScrollViewer_PointerMoved" 
       PointerExited="ScrollViewer_PointerExited" 
       PointerReleased="ScrollViewer_PointerReleased" 

Et les traiter dans le code derrière comme celui-ci:

private bool _isPressed; 

    private void ScrollViewer_PointerPressed(object sender, PointerRoutedEventArgs e) 
    { 
     _isPressed = true; 
    } 

    private void ScrollViewer_PointerMoved(object sender, PointerRoutedEventArgs e) 
    { 
     if (_isPressed) 
     { 
      //your logic 
     } 
    } 

    private void ScrollViewer_PointerExited(object sender, PointerRoutedEventArgs e) 
    { 
     _isPressed = false; 
    } 

    private void ScrollViewer_PointerReleased(object sender, PointerRoutedEventArgs e) 
    { 
     _isPressed = false; 
    } 
+0

Merci pour votre réponse, j'ai trouvé la fonction peut détecter la molette de la souris, mais j'ai besoin de détecter d'autres types d'entrée comme le geste ou le stylo, donc j'ai besoin de toute une fonction pour détecter tous les types d'entrée. –

+0

J'ai mis à jour une réponse j'espère que ça va vous aider. De l'événement PointerMove vous pouvez simuler la position de défilement. –

+0

Savez-vous comment obtenir le mouvement de PointerMoved? –