Ответ 1
Простой ответ заключается в том, что вы можете управлять TextBlock двумя способами... через свойство Text и через коллекцию Inlines.
В этом случае вы используете коллекцию Inlines.
TextBlock (через метод IAddChild.AddChild в TextElement) достаточно умен, чтобы обернуть эту Grid в InlineUIContainer... который, конечно же, является Inline.
Другими словами, вышеупомянутый xaml... совпадает с:
<Grid x:Name="LayoutRoot">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<InlineUIContainer>
<Grid>
<Rectangle Fill="AliceBlue" Width="25" Height="25"/>
</Grid>
</InlineUIContainer>
</TextBlock>
</Grid>
Надеюсь, что это поможет кому-то избежать неприятностей, которые у меня были. Хе-хе, хе-хе. Ну, по крайней мере, я надеюсь, что это успокоит их с пониманием того, как это работает.