我有以下xaml页面,其格式与我期望的完全相同。前两行和最后一行仅占用元素允许的空间。然后,第三行占用页面上的剩余空间。这是按预期工作的xaml:
<Grid>
<!--Parent Grid-->
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<!--Parent Row 0-->
<Grid Grid.Row="0" Margin="5">
<Label Content="Auto Row 0"></Label>
</Grid>
<!--Parent Row 1-->
<Grid Grid.Row="1" Margin="5">
<Label Content="Auto Row 1"></Label>
</Grid>
<!--Parent Row 2-->
<Grid Grid.Row="2" Margin="5">
<Label Content="Stretch Row 2"></Label>
</Grid>
<!--Parent Row 3-->
<Grid Grid.Row="3" Margin="5">
<Label Content="Auto Row 3"></Label>
</Grid>
</Grid>
但是,此页面将加载到以下网格的第一行。当它加载到此行时,每一行都具有“自动”特征。因此,每行不会紧挨着另一行而不是第三行占用页面上的所有剩余空间。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<StackPanel>
<Controls:SettingsTabControl Grid.Row="0" x:Name="mytab"></Controls:SettingsTabControl>
</StackPanel>
<Controls:SettingsFooter Grid.Row="1" />
</Grid>
我该如何解决这个问题?
答案 0 :(得分:3)
在第二部分使用DockPanel而不是Grid。
<DockPanel x:Name="LayoutRoot">
<Controls:SettingsFooter DockPanel.Dock="Bottom" />
<Controls:SettingsTabControl x:Name="mytab" />
</DockPanel>