如何使用WebView全宽

时间:2014-07-21 08:09:17

标签: c# windows-8.1

在我的Windows应用商店应用中,我在XAML中只有一个WebView:

<Grid SizeChanged="Grid_SizeChanged"
      Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <WebView x:Name="myWebView"
              Width="Auto"
              ScrollViewer.VerticalScrollMode="Auto"/>
</Grid>

我想在不同的屏幕尺寸或方向上将宽度设置为最大可用值。

我试图获得grit本身的宽度来设置WebView的内容。但Grid只给出了包含WebView的宽度(如果设置为任何值)。宽度=“自动”时,宽度为零。如果我将WebView的宽度设置为300,那么Grid的宽度也是300.

Grit的高度是正确的,并且在更改了方向后,我可以将WebView的高度设置为Grit值。我希望宽度相同。

如何安排WebView使用可用空间?

编辑:加载内容时可能存在问题?

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        navigationHelper.OnNavigatedTo(e);
        DetailParms parms = e.Parameter as DetailParms;
        //myWebView.Width = parms.webWidth;
        myWebView.NavigateToString(parms.html);
    }

我可以使用parms中的值设置WebView.Width。但是在打电话的时候我也不知道可用的空间。

这是完整的XAML:

<Page
    x:Name="pageRoot"
    x:Class="CTDICT.Programs.MemoDetails"
    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:CTDICT.Programs"
    xmlns:common="using:CTDICT.Common"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">


    <Grid x:Name="myGrid"
          SizeChanged="Grid_SizeChanged"
          Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <WebView x:Name="myWebView"
                  ScrollViewer.VerticalScrollMode="Auto"/>
    </Grid>
</Page>

2 个答案:

答案 0 :(得分:2)

我不知道为什么它不起作用。但我可以计算剩余的宽度并设置WebView.Width。

我在Grid_SizeChanged中执行它,因为它将在方向更改时触发。

此代码现在适用于我:

    private void Grid_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        double remainingWidth = Windows.UI.Xaml.Window.Current.Bounds.Width-362;
        myWebView.Width = remainingWidth;
        myWebView.Height = e.NewSize.Height;
    }

有趣:在此处设置WebView.Width后,再次调用Grid_SizeChanged。第二次网格的e.NewSize.Width反映之前更改的WebSize.Width。这意味着,在WebView.Width更改后设置Grid.Width。与Xyroid所说的相反,Rico Suter证实了这一点。

答案 1 :(得分:1)

Width="Auto"移除WebView。不要给任何控件任何宽度/高度。 Grid将根据大小进行扩展,因此WebView也会扩展。