Я создал решение этой проблемы.Измеряя текст, вы можете разделить текст вручную на две части>
<Grid Width="400">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image x:Name="WrapContent" Width="200" Height="192" />
<TextBlock x:Name="RightTextBlock" Width="200" FontSize="24" FontFamily="Segoe WP" TextWrapping="Wrap" Grid.Column="1" />
<TextBlock x:Name="BottomTextBlock" Width="400" FontSize="24" FontFamily="Segoe WP" TextWrapping="Wrap" Grid.Row="1" Grid.ColumnSpan="2" />
</Grid>
public MainPage()
{
InitializeComponent();
string text = "Lorem ipsum dolor sit amet consectetur adipiscing elit. Lorem ipsum dolor sit amet consectetur adipiscing elit. Lorem ipsum dolor sit amet consectetur adipiscing elit. Lorem ipsum dolor sit amet consectetur adipiscing elit. Lorem ipsum dolor sit amet consectetur adipiscing elit. Lorem ipsum dolor sit amet consectetur adipiscing elit.";
string[] words = text.Split(' ');
RightTextBlock.Text = words[0];
for (int i = 0; i < words.Length; i++)
{
string word = words[i];
string previousText = RightTextBlock.Text;
RightTextBlock.Text += " " + word;
if (RightTextBlock.ActualHeight > WrapContent.ActualHeight)
{
RightTextBlock.Text = previousText;
BottomTextBlock.Text += String.Join(" ", words.Skip(i));
break;
}
}
}