带有XAML元素头的ScrollViewer内部的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

在WebView中,我使用WP 8.1加载HTML元素。每当内容超过WebView高度时,就会出现无问题滚动。我的问题是在WebView的顶部有XAML元素,这些元素必须与WebView滚动一起滚动

源代码:

<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