2017-03-07 62 views
1

我曾經有條款和條件的滾動查看器,當用戶滾動到底部時,我使接受按鈕處於活動狀態,因此只能在滾動後才能繼續。UWP WebView抓取滾動事件

我用用這個代碼來捕獲滾動到底事件:

scrollViewerMain.ViewChanged += ScrollViewerMain_ViewChanged; 

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()); 
    } 
} 

這是工作的罰款,但現在的條款和條件來爲HTML,所以我有使用WebView控件,以便格式正確。沒有ViewChanged事件 - 那麼我怎樣才能達到相同的結果 - 當用戶滾動到WebView的底部時,該按鈕已啓用?

+0

我不認爲你可以得到滾動事件的結束。你必須通過調用Javacsript來完成。如果你在webview中沒有任何用戶交互,那麼就有工作 – Archana

回答

0

WebView的滾動條無法直接訪問應用程序,因爲它是嵌入式Edge瀏覽器視圖的一部分。但是,您可以使用WebView.InvokeScriptAsync方法解決問題,您可以在其中調用腳本,以檢查用戶到達頁面末尾的時間。

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

這樣的腳本可以找到for example here。要實際通知您的C#代碼,當用戶向下滾動到底部時,您還需要注入一個允許網絡對象的。一個很好的教程是可用here on Martin Suchan's blog。您可以使用此注入對象通知有關該事件的C#代碼,然後啓用該方法中的按鈕。