В свете ваших комментариев, вот еще один пример, показывающий несколько способов достижения того, что вы хотите, макет сетки и макет DockPanel. Судя по звукам, макет DockPanel, вероятно, то, что вы ищете. Если это не сработает, вам может потребоваться более четкое описание желаемого макета и свойств.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.45*" />
<RowDefinition Height="0.05*" />
<RowDefinition Height="0.45*" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<!-- note: you don't need to declare ColumnDefintion
widths here; added for clarity. -->
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="0.5*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Background="Tomato"
TextWrapping="Wrap">I'm on the left</TextBlock>
<TextBlock
Grid.Column="1"
Background="Yellow"
TextAlignment="Right"
TextWrapping="Wrap">I'm on the right</TextBlock>
</Grid>
<Grid Grid.Row="1" Background="Gray" />
<DockPanel Grid.Row="2">
<TextBlock
DockPanel.Dock="Left"
Background="Tomato"
TextWrapping="Wrap">I'm on the left</TextBlock>
<TextBlock
DockPanel.Dock="Right"
Background="Yellow"
TextAlignment="Right"
TextWrapping="Wrap">I'm on the right</TextBlock>
</DockPanel>
</Grid>
</Page>
Вам нужно использовать DockPanel, если вы не хотите, чтобы все элементы были сложены, как это делает StackPanel. Чтобы заставить второй текстовый блок выравниваться вправо, вы можете добавить дополнительный фиктивный текстовый блок, чтобы заполнить область между ними:
<Текстовый блок>Левый текстТекстовый блок> <Текстовый блок DockPanel.Dock="Right">Правый текстТекстовый блок> <Текстовый блок />
Или вы можете использовать атрибут TextAlignment:
Левый текст Правый текст