在我的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>
答案 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
也会扩展。