C# 需要有关XAML网格格式设置错误的帮助吗

C# 需要有关XAML网格格式设置错误的帮助吗,c#,wpf,xaml,C#,Wpf,Xaml,我有下面的xaml页面,它的格式完全符合我的预期。前两行和最后一行仅占用元素允许的空间。然后,第三行占用页面上的剩余空间。以下是按预期工作的xaml: <Grid> <!--Parent Grid--> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />

我有下面的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> 


如何修复此问题?

在第二部分使用DockPanel而不是网格

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

在第二部分使用DockPanel而不是网格

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


Grid.Row=“0”应位于StackPanel@Marco,这无关紧要:如果未设置行,则默认为0更正。将其移动到StackPanel没有任何效果我可以完全删除控件的设置以及包含它的行,并且它对我的problemGrid没有任何影响。row=“0”应位于StackPanel@Marco,这无关紧要:如果未设置行,则默认为0更正。将其移动到StackPanel没有任何效果我可以完全删除控件的设置以及包含它的行,并且对我的问题没有任何影响它可以工作!但是,你能解释一下为什么会修复它吗?DockPanel的默认属性是允许最后一个孩子使用所有可用空间(你可以关闭它)。网格不会-在网格上获得相同的效果更复杂-这就是为什么当我可以的时候,我总是使用dockpanel。它可以工作!但是,你能解释一下为什么会修复它吗?DockPanel的默认属性是允许最后一个孩子使用所有可用空间(你可以关闭它)。网格不会-在网格上获得相同的效果更复杂-这就是为什么当我可以的时候,我总是使用dockpanel。