2014-10-15 3 views
0

Я делаю это в C# на телефоне Windows. Я хочу TextBlock вертикально выровнен по центру в StackPanel с высоты 58. Вот что я сделал:Как вертикально выровнять TextBlock в StackPanel

<StackPanel Height="58" VerticalAlignment="Center"> 
       <TextBlock Text="{Binding Name}" Style="{StaticResource SubheaderTextBlockStyle}" Foreground="black" /> 
      </StackPanel> 

Но это не вертикально выровнен по центру. Не могли бы вы рассказать мне, почему и как я могу это исправить?

спасибо.

+0

Проверьте это сообщение. StackPanel, вероятно, является неправильным вариантом в вашем case.http: //stackoverflow.com/questions/1918847/how-can-i-vertically-align-a-textbox-inside-a-stackpanel –

ответ

2

Я думаю, вы должны пойти с Grid чем StackPanel, как @ The-First-Tiger & @Krishna упоминалось выше, а также вы неуместны в VerticalAlignment? Вы хотели TextBlock выровнять вертикально центр, поэтому он должен быть таким:

<Grid Height="58" > 
    <TextBlock VerticalAlignment="Center" Text="{Binding Name}" Foreground="black" /> 
</Grid 
+0

Спасибо. Я новичок в программировании на C# Windows. Является ли сетка более тяжелой, чем StackPanel? Значит, он использует больше памяти? В общем, следует ли использовать StackPanel вместо сетки, если можно? – michael

+0

@michael Как я не понимаю, потребление памяти каждого из них предложило бы взглянуть на это. http://stackoverflow.com/questions/15575854/grid-and-stackpanel-which-has-the-better-performance – Kulasangar

0

StackPanel нет для этого. Это «стеки» вещей не выравнивает их.

Попробуйте с помощью Grid вместо:

<Grid Height="58"> 
    <TextBlock Text="{Binding Name}" Height="20" Foreground="black"/> 
</Grid> 
0

Согласно MSDN docs about StackPanel

StackPanel Размещает дочерние элементы в единую линию, которая может быть ориентированы по горизонтали или по вертикали.

Так что в вашем случае StackPanel не является правильным элементом управления. Если вы хотите, чтобы ваш контроль был зафиксирован в определенной позиции, вы можете использовать DockPanel и поместить в него свой контроль. Children Controls of DockPanel может использовать .Dock объект для выравнивания

<DockPanel> 
     <Button DockPanel.Dock="Bottom" Name="btn" HorizontalAlignment="Center" 
       VerticalAlignment="Bottom"></Button> 
</DockPanel> 
Смежные вопросы