Как можно вставить Grid в TextBlock? - PullRequest
2 голосов
/ 05 августа 2010

На днях я столкнулся со следующим xaml, и я взбесился:

<Grid x:Name="LayoutRoot">
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
        <Grid>
            <Rectangle Fill="AliceBlue" Width="25" Height="25"/>
        </Grid>
    </TextBlock>
</Grid>

Другими словами ... как можно поместить Грид внутри TextBlock?

1 Ответ

4 голосов
/ 05 августа 2010

Простой ответ заключается в том, что вы можете управлять TextBlock двумя способами ... через свойство Text и через коллекцию Inlines.

В этом случае вы используете коллекцию Inlines.

TextBlock (с помощью метода IAddChild.AddChild в TextElement) достаточно умен, чтобы обернуть эту сетку в InlineUIContainer ... который, конечно, является встроенным.это то же самое, что и:

<Grid x:Name="LayoutRoot">
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
        <InlineUIContainer>
            <Grid>
                <Rectangle Fill="AliceBlue" Width="25" Height="25"/>
            </Grid>
        </InlineUIContainer>
    </TextBlock>
</Grid>

Надеюсь, это поможет кому-то избежать моей одержимости.Хе хеНу, по крайней мере, я надеюсь, что это успокоит их пониманием того, как это работает.

...