带有XAML元素头的ScrollViewer内部的WebView
在WebView中,我使用WP 8.1加载HTML元素。每当内容超过WebView高度时,就会出现无问题滚动。我的问题是在WebView的顶部有XAML元素,这些元素必须与WebView滚动一起滚动 源代码:带有XAML元素头的ScrollViewer内部的WebView,xaml,windows-phone-8.1,winrt-xaml,Xaml,Windows Phone 8.1,Winrt Xaml,在WebView中,我使用WP 8.1加载HTML元素。每当内容超过WebView高度时,就会出现无问题滚动。我的问题是在WebView的顶部有XAML元素,这些元素必须与WebView滚动一起滚动 源代码: <ScrollViewer> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="*"/> </Grid.R
<ScrollViewer>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid VerticalAlignment="Top" >
<StackPanel x:name="xamlelement" Margin="15 20 0 0">
<textblock/>
-------
-------
-------
</StackPanel>
</Grid>
<Grid x:Name="testgrid" Grid.Row="1">
<WebView Margin="0 30 0 0" x:Name="msgContent" >
</WebView>
</Grid>
</Grid>
</ScrollViewer>
-------
-------
-------
每当WebView元素“msgContent”滚动时,我希望stackpanel“Xamlement”与WebView一起滚动。这里的问题是,我们可以通过这两个步骤禁用WebView滚动 1)将overhidden设置为加载到webview的html内容 2) 将webview的高度设置为加载到其中的html内容
但是,当我们尝试在webview中移动时,EVNET不会传递给父scrollviewer元素,webview提供了InvokeScript方法,该方法使用特定参数从当前加载的HTML执行指定的脚本函数。当WebView的LoadCompleted事件发生时,我将调用禁用滚动的JavaScript。查看下面给出的全部代码
string DisableScrollingJs = @"function RemoveScrolling()
{
var styleElement = document.createElement('style');
var styleText = 'body, html { overflow: hidden; }'
var headElements = document.getElementsByTagName('head');
styleElement.type = 'text/css';
if (headElements.length == 1)
{
headElements[0].appendChild(styleElement);
}
else if (document.head)
{
document.head.appendChild(styleElement);
}
if (styleElement.styleSheet)
{
styleElement.styleSheet.cssText = styleText;
}
}";
void webView_LoadCompleted(object sender, NavigationEventArgs e)
{
webView.InvokeScript("eval", new[] { DisableScrollingJs });
}
从。您可以将注入到WebView中,以关闭启用其滚动的溢出处理,以便ScrollViewer处理所有滚动。你现在的方式我猜它实际上是一个卷轴中的一个卷轴,对吗?有没有办法找到加载的html内容的高度[在html响应网页的情况下]?在webview中添加一个监听器到scriptnotify,在html页面中添加监听器来调整事件的大小,并用c#代码将文档的高度从scipt发送到scriptnotify