在以下示例中,有两个Grid
行,其高度为6*
和4*
。问题是只有在用户更改窗口大小后,才会计算行的正确高度。
只有在设置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 :(得分:0)
为网格赋予高度或最小高度值:
<Grid x:Name="grid" MinHeight="100">
...
</Grid>
这不是一个错误:您将行设置为窗口高度的60%/ 40%,但也将窗口设置为其子项的大小(SizeToContent="Height"
)。
答案 1 :(得分:0)
您可能应该在SizeToContent
事件中将Manual
设置为Window.Loaded
。这将允许框架确定窗口的正确大小,然后强制行正确计算高度。
private void Window_Loaded ( object sender , RoutedEventArgs e )
{
SizeToContent = SizeToContent.Manual;
}