我曾经有一个滚动查看器用于条款和条件,当用户滚动到底部时,我使接受按钮处于活动状态,这样他们只能在滚动后继续。
我曾经使用以下代码捕捉滚动到底部事件:
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 :(得分:0)
应用程序无法直接访问WebView
的滚动条,因为它是嵌入式Edge浏览器视图的一部分。但是,您可以使用WebView.InvokeScriptAsync
方法解决问题,您可以在其中调用脚本,以检查用户到达页面末尾的时间。
await web.InvokeScriptAsync("eval", new string[] { script });
可以找到for example here这样的脚本。
要实际通知您的C#代码,当用户向下滚动到底部时,您还需要注入 Web允许对象。有一个很好的教程可用here on Martin Suchan's blog。您可以使用此注入的对象通知您有关该事件的C#代码,然后启用该方法中的按钮。