需要有关XAML Grid格式化错误方法的帮助

时间:2018-02-03 20:21:42

标签: c# wpf xaml

我有以下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> 

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

在第二部分使用DockPanel而不是Grid。

   <DockPanel x:Name="LayoutRoot">
        <Controls:SettingsFooter DockPanel.Dock="Bottom" />
        <Controls:SettingsTabControl x:Name="mytab" /> 
    </DockPanel>