Ваша внутренняя сетка растягивается, чтобы заполнить всю внешнюю сетку. Поскольку средний ряд во внутренней сетке является единственной строкой с переменным размером, он затем расширяется по вертикали, но, поскольку изображение по умолчанию имеет значение «Растянуть» = «Унифицированный», оно заполняет только определенное количество среднего ряда и имеет вертикальную ориентацию. выровнены по середине строки.
Это должно отсортировать это:
<Grid Margin="5">
<Grid x:Name="LayoutGrid" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Label Content="This is a label"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Grid.Row="0"/>
<Image x:Name="MainImage"
Stretch="Uniform"
Grid.Row="1">
<Image.Source>
<BitmapImage UriSource="test.jpg"/>
</Image.Source>
</Image>
<TextBlock HorizontalAlignment="Center"
VerticalAlignment="Top"
Grid.Row="2">
<Run Text="Some text "/>
<Run Text="Some more text"/>
</TextBlock>
</Grid>
</Grid>
Хороший способ отладки такого рода проблемы - установить цвет фона различных элементов, чтобы увидеть области, которые они занимаем.
Отредактировано для отражения комментария