2010-10-20 68 views
1

在以下示例中,有兩個Grid行高度爲6*4*。問題是,只有在用戶更改窗口的大小後,纔會計算正確的行高。 只有在設置SizeToContent標誌時纔會發生這種情況。
任何想法爲什麼?如何強制窗口在加載時自動計算高度?Wpf網格行高不能用SizeToContent正確計算

<Window x:Class="TestGridRow.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" SizeToContent="Height"> 
<Grid x:Name="grid"> 
    <Grid.RowDefinitions> 
     <RowDefinition x:Name="row0" Height="6*"/> 
     <RowDefinition x:Name="row1" Height="4*"/> 
    </Grid.RowDefinitions> 
    <TextBox Grid.Row="0" x:Name="textBox" TextWrapping="Wrap" 
      HorizontalScrollBarVisibility="Auto" IsReadOnly="True" xml:space="preserve"> 
     Hallo 
     Hallo 
     Hallo 
     </TextBox> 
    <TextBlock Background="Red" Grid.Row="1"/> 
</Grid> 

+0

3.5或4?我認爲在網格和行大小計算中存在一些問題,如4 – Will 2010-10-20 13:00:15

+0

基本上是2010/4,但在2008/3.5中也是如此。 – Elad 2010-10-20 13:04:18

+0

在該類的構造函數中,您可以使用Dispatcher在渲染後設置SizeToContent設置。 – Rachel 2010-10-20 13:25:23

回答

0

您應該在Window.Loaded事件中將SizeToContent設置爲Manual。這將允許框架確定窗口的正確大小,然後強制行正確計算高度。

private void Window_Loaded (object sender , RoutedEventArgs e) 
{ 
    SizeToContent = SizeToContent.Manual; 
} 
0

給電網的高度或了minHeight值:

<Grid x:Name="grid" MinHeight="100"> 
    ... 
</Grid> 

這是不是一個錯誤:你設置的行爲的高度的60%/ 40%窗口,還可以將窗口設置爲其子項的大小(SizeToContent="Height")。