2016-03-27 2 views
0

У меня есть стековая панель с фиксированной шириной.Как центрировать 2 элемента в горизонтальной панели стека

Внутри панели стека у меня есть два горизонтально выровненных элемента: текстовый блок и текстовое поле.

Можно ли выровнять эти два элемента, например, они появляются бок о бок, но центрируются внутри панели стека?

Вот мой код до сих пор:

<StackPanel Orientation="Horizontal" Width="17cm"> 
    <TextBlock Text="Invoice Nr:"/> 
    <TextBox Width="2cm" /> 
</StackPanel> 

ответ

0

Вы могли бы поставить два элемента управления в другой контейнер, а затем центрировать этот контейнер горизонтально. Что-то вроде этого:

<StackPanel Orientation="Horizontal" Width="17cm"> 
    <StackPanel HorizontalAlignment="Center"> 
     <TextBlock Text="Invoice Nr:"/> 
     <TextBox Width="2cm" /> 
    </StackPanel> 
</StackPanel> 
+0

Пробовал, что тоже не работает. Но все же спасибо, суб-контейнер - хороший намек, возможно, он работает с другим контейнером. – askolotl

1

С StackPanel будет трудно достичь, но с гридом это может быть сделано путем установки HorizontalAlignment и Grid.Column на детях, как ниже:

<Grid Width="17cm" > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    </Grid.ColumnDefinitions> 
    <TextBlock HorizontalAlignment="Right" Text="Invoice Nr:"/> 
    <TextBox Grid.Column="1" HorizontalAlignment="Left" Width="2cm" /> 

</Grid> 
+0

Пробовал это, но это вызывает 3 ошибки: ** 1. ** * Элемент «ColumnDefinitions» не распознается или недоступен. * ** 2. ** * Прилагаемое свойство ColumnDefinitions не было найдено в типе ' Grid '. * ** 3. ** * Прилагаемое свойство «Grid.ColumnDefinitions» не определено в «StackPanel» или одном из его базовых классов. * – askolotl

+0

BTW, я хочу, чтобы оба элемента были центрированы (рассматривались как группа) , Итак, допустим, для обоих элементов должна быть установлена ​​метка Grid.Column = "1"? – askolotl

Смежные вопросы