2010-10-20 73 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")。