2011-07-19 41 views
7

我試圖用VerticalContentAlignment屬性垂直居中文本框的內容,但它似乎根本沒有任何效果。文本保持在最高。誰能告訴我如何做到這一點?Silverlight:TextBox VerticalContentAlignment =「Center」

這裏是我的代碼:

<TextBox Grid.Column="1" 
    Grid.Row="0" 
    Width="200" 
    Height="28" 
    VerticalAlignment="Center" 
    VerticalContentAlignment="Center" /> 
+0

請參閱http://stackoverflow.com/questions/1491649/text-vertical-alignment-in-wpf-textblock –

回答

7

可以使文本框垂直居中它的文本。但是,這確實需要您重新應用其ControlTemplate。

爲此:

  1. 複製樣式和從TextBox Styles and Templates page on MSDN所述的ControlTemplate到合適<UserControl.Resources>元件。 (此ControlTemplate實際上用於驗證工具提示;我們將更改的ControlTemplate位於樣式內。)
  2. 在TextBox的樣式中找到ScrollViewer元素,並向其添加VerticalAlignment="Center"屬性。

或者,你可以

VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 

添加屬性到ScrollViewer中。這應該允許您使用VerticalContentAlignment屬性設置文本框內容的垂直對齊方式。

如果您希望更改文本框內容的水平對齊方式,則可以採用相同的方法。

-1

的XAML代碼是正確的,下面應該是足夠了:

<TextBlock Text="Centered Text" VerticalAlignment="Center" /> 

你可以嘗試電網之外的代碼?

檢查您在網格中定義的屬性,這可能會導致您的行爲。你能發佈完整的XAML代碼嗎?

+0

由於您的代碼會生成一個TextBlock,其文本的大小與其包含的文本大小相同。但是,如果我使用_TextBox_並將Height設置爲30,則問題仍然存在。 –