WinRT - ScrollViewer中的多个WebView

时间:2014-12-04 14:42:42

标签: c# windows-8 windows-runtime microsoft-metro winrt-xaml

我里面有一个ScrollViewer和WebViews。

<ScrollViewer x:Name="ScrollViewer" 
              HorizontalScrollMode="Disabled" 
              VerticalScrollMode="Auto" 
              VerticalScrollBarVisibility="Hidden">
    <StackPanel Orientation="Vertical">
        <WebView/>
        <WebView/>
        <WebView/>
        ...
        <WebView/>  
    </StackPanel>
</ScrollViewer>

所有WebView的高度都等于其内容(我为webView实现了类似WrapContent的内容)。
现在,问题是,webviews是弹跳(橡皮筋效果),而滚动和滚动查看器不滚动!有时它的卷轴有时不是。
所以我的问题是如何禁用WebView的滚动/弹跳(橡皮筋效果)?

2 个答案:

答案 0 :(得分:0)

不确定这两个解决方案中的任何一个可能对您有用,但它可能会让您了解RE可以做什么。我假设问题是WebView内部的滚动 - 这会妨碍ScrollViever。您可以通过注入JavaScript来禁用滚动 - XAML代码更进一步:(为了清晰起见,添加了背景颜色)

    private async void TestWebView_OnNavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args)
{
    var script = "document.documentElement.style.overflow = 'hidden';document.body.style.background = 'red';";
    await TestWebView.InvokeScriptAsync("eval", new string[] {script});
}

或者通过添加叠加层(左侧&#39;列&#39;):

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ScrollViewer x:Name="ScrollViewer" 
        HorizontalScrollMode="Disabled" 
        VerticalScrollMode="Auto" 
        VerticalScrollBarVisibility="Hidden">
    <Grid>
        <StackPanel Orientation="Vertical">
            <WebView NavigationCompleted="TestWebView_OnNavigationCompleted" x:Name="TestWebView" Height="800" Source="http://stackoverflow.com/"/>
            <WebView Height="500" Source="http://stackoverflow.com/"/>
        </StackPanel>
        <Grid Width="200" Background="Black" Opacity="0.5"  HorizontalAlignment="Left"/>
    </Grid>
</ScrollViewer>

图像: enter image description here

答案 1 :(得分:0)

设置webview的高度超过其内容高度并使内容样式溢出隐藏将停止橡皮筋效果