2014-07-21 26 views
3

在我的Windows Store應用我只有在網頁視圖XAML:如何使用的WebView全寬

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

我想設置的寬度在不同屏幕尺寸或方向的最大可用值。

我試圖獲得砂礫本身的寬度來設置與WebView的。但是網格只給出了包含WebView的寬度(如果設置爲任何值)。寬度=「自動」,寬度爲零。如果我將WebView的寬度設置爲300,那麼網格的寬度也是300.

砂礫的高度是正確的,並且在改變方向後,我可以將WebView的高度設置爲堅硬的價值。我想寬度相同。

如何安排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

Grid_SizeChanged是什麼? – Xyroid

+0

將x:Name「myGrid」添加到網格後: Double test = myGrid.Width; test = this.Frame.Width; 在這兩種情況下:結果是NaN(不是數字) Double test = myGrid.ActualWidth; test = this.Frame.ActualWidth;在這兩種情況下:Width = 0.00 – thpitsch

+0

GridSizeChanged:myWebView.Height = e.NewSize.Height; – thpitsch

回答

1

WebView刪除Width="Auto"。不要給任何控制寬度/高度。 Grid將根據尺寸擴大,因此WebView也會擴大。

+0

編號沒有任何寬度,結果寬度爲零! – thpitsch

+0

Xyroid是否正確,請發佈所有XAML(網格周圍什麼)? –

+0

我無法在評論中格式化源代碼。但是我會在一分鐘內在上面的問題中編輯完整的Grid。 – thpitsch

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。這意味着,Grid.Width在WebView.Width發生更改後設置。與Xyroid說的和Rico Suter已經證實的相反。