2017-03-07 3 views
1

Ich hatte eine Scroll-Viewer für AGB, wenn der Benutzer nach unten scrollte ich die Schaltfläche accept aktiviert, so dass sie nur fortfahren konnten, wenn sie gescrollt.UWP WebView Catch Bildlaufereignis

ich verwendet, um die Scroll nach unten Ereignis mit diesem Code zu fangen:

scrollViewerMain.ViewChanged += ScrollViewerMain_ViewChanged; 

und

private void ScrollViewerMain_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) 
{ 
    if (_scrolledToBottomEventHandlerHit) 
    { 
     return; 
    } 

    var verticalOffsetValue = scrollViewerMain.VerticalOffset; 
    var maxVerticalOffsetValue = scrollViewerMain.ExtentHeight - scrollViewerMain.ViewportHeight; 

    if (maxVerticalOffsetValue < 0 || verticalOffsetValue == maxVerticalOffsetValue) 
    { 
     _scrolledToBottomEventHandlerHit = true; 
     // Scrolled to bottom - trigger event 
     ScrolledToBottom(this, new EventArgs()); 
    } 
} 

Dies funktionierte gut, aber jetzt sind die Bedingungen kommen wie html, so dass ich die WebView Steuerung zu verwenden, damit die Formatierung korrekt ist. Es gibt kein Ereignis ViewChanged - wie kann ich das gleiche Ergebnis erzielen - wenn der Benutzer zum Ende des WebView scrollt, ist die Schaltfläche aktiviert?

+0

Ich denke nicht, dass Sie Ende des Scroll-Ereignisses erhalten können. Sie müssen es tun, indem Sie das Javacsript aufrufen. Wenn Sie keine Benutzerinteraktionen in der Webansicht haben, gibt es eine Arbeit – Archana

Antwort

0

Die Bildlaufleiste WebView ist für die App nicht direkt zugänglich, da sie Teil der eingebetteten Edge-Browseransicht ist. Sie können Ihr Problem jedoch mithilfe der Methode WebView.InvokeScriptAsync lösen, in der Sie ein Skript aufrufen können, das nach der Uhrzeit sucht, zu der der Benutzer das Ende der Seite erreicht hat.

await web.InvokeScriptAsync("eval", new string[] { script }); 

Solche Skripte können for example here gefunden werden.

Um Ihren C# -Code tatsächlich zu benachrichtigen, wenn der Benutzer nach unten scrollt, müssen Sie auch ein Web-Objekt einfügen. Ein tolles Tutorial dazu ist verfügbar here on Martin Suchan's blog. Sie können dieses injizierte Objekt verwenden, um Ihren C# -Code über das Ereignis zu melden und dann die Schaltfläche in dieser Methode zu aktivieren.

Verwandte Themen