Я не уверен, что полностью понимаю ограничения вашей проблемы, поэтому возможно, что ни одно из этих решений не будет работать, но вот два быстрых предложения.(Лично мне больше нравится Решение 2.)
<Edit: Additional Thought>
Решение 0 Если вы можете изменить Grid.ColumnSpan
текстового блока, вы можете сделать решение 2 без контейнера.Просто распределите текстовый блок по нескольким столбцам и отрегулируйте отступ текстового блока, чтобы центрировать содержимое!</Edit>
Решение 1 Прежде всего, если ваша текущая структура XAML выглядит примерно так:
<Grid>
<TextBlock Grid.Column="2" Text="12345" />
</Grid>
Рассмотрите возможность изменения на что-то вроде этого?
<Grid>
<!-- Draw up columns so that the textblock looks as you wish -->
<TextBlock Grid.Column="2" Text="12345" />
<!-- Span an inner grid across all the columns/rows in the outer grid -->
<Grid Grid.ColumnSpan=".."
Grid.RowSpan="..">
<!-- All the other stuff in the Grid -->
</Grid>
</Grid>
Решение 2 Если это не сработает, рассмотрите возможность размещения текстового блока в другом контейнере, например Label
, и растяните его по столбцам.
<Grid>
<!-- Use the left/right padding on the label to center the textbox -->
<sdk:Label Grid.Column="0"
Grid.ColumnSpan="3"
Grid.Row="1"
HorizontalAlignment="Center"
Padding="13,0,0,0">
<!-- In my example, setting the left pading to 13 centered the textbox -->
<TextBlock HorizontalAlignment="Center"
Text="......!......" />
<!-- Text like the test above, really helped find the correct padding -->
</sdk:Label>
</Grid>
Я надеюсь, что это работает в рамках ваших ограничений, а если нет, то поможет вам найти решение самостоятельно!