如何使用WebView全宽度

本文关键字:WebView 何使用 | 更新日期: 2023-09-27 18:13:43

在我的Windows Store应用程序中,我只有一个WebView:

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

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

我试过让沙砾本身的宽度来设置WebView的宽度。但是Grid只给我包含WebView的宽度(如果设置为任何值)。如果Width="Auto",则宽度为零。如果我将WebView的宽度设置为300,那么网格的宽度也是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);
    }

我可以设置WebView。宽度,值来自parms。但是在打电话的时候,我也不知道有空闲的空间。

下面是完整的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>

如何使用WebView全宽度

Width="Auto"WebView中移除。不要给任何控件设置任何宽度/高度。Grid会根据大小膨胀,因此WebView也会膨胀。

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

我在grid_sizechange中这样做,因为它会在方向改变时被触发。

这段代码现在为我工作了:

    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_sizechange再次被调用。第二次,网格的e.NewSize.Width反映了WebSize。宽度刚刚改变。这意味着,网格。宽度是在WebView之后设置的。宽度改变了。与Xyroid所说的和Rico Suter已经证实的相反。