2012-06-29 94 views
0

我想對齊一個文本塊垂直和水平居中在一個堆棧面板中有列表視圖中,但我只能得到文本中心,但不能水平。再加上文本沒有被包裝。這裏是我已經試過代碼:在堆疊面板中對齊文本的垂直和水平中心?

<ListBox Name="lstTiles" Margin="12,0,-12,0" Grid.Row="1" SelectionChanged="lstTiles_SelectionChanged"> 
     <ListBox.ItemsPanel> 
      <ItemsPanelTemplate> 
       <toolkit:WrapPanel/> 
      </ItemsPanelTemplate> 
     </ListBox.ItemsPanel> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Background="{StaticResource PhoneAccentBrush}" Width="145" Height="80" Margin="8,8,0,0" Orientation="Vertical" > 
        <TextBlock Text="{Binding Name}" Tag="{Binding ID}" Style="{StaticResource PhoneTextNormalStyle}" FontSize="15" TextWrapping="Wrap" TextAlignment="Center" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

我如何能實現文字垂直,水平和textwrap?

回答

0

它看起來像是因爲您將StackPanel設置爲水平方向,所以您將文本塊放在彼此的旁邊,而不是彼此重疊。由於StackPanel元素取得了子元素的大小,因此您可以將其視爲水平並排列出的文本塊。由於每個文本塊都會佔用其中的文本大小,因此您將看到寬度不等的塊,因此水平居中將不起作用。

您可以使用邊距(痛苦)來實現相等的寬度。我不推薦這個。

您也可以在堆棧面板中放置設定寬度的網格,並將文本塊放在網格上。您可以設置文本塊的寬度以獲得正確的效果,但此刻我無法測試此內容,並且我不記得它是否會導致文本拉伸。

對於文本環繞,我假設你在文本塊內部討論,這很容易 - 只需將文本塊的TextWrapping屬性設置爲Wrap即可。

嘗試在ListBoxItem的設置Horizo​​ntalContentAlignment和VerticalContentAlignment性能。我現在沒有我的開發計算機,所以我無法進行實驗,但是這裏有一個可能對您有幫助的文章:Silverlight 3: ListBox DataTemplate HorizontalAlignment。看看前兩個答案,看看哪一個可能對你的情況最有幫助,取代中心,當然,取代左邊,頂部或拉伸。

+0

嗨,在我的代碼中,我已經寫了textwrap屬性,但是當我將堆棧面板方向設置爲垂直時,它不工作 –

+0

因此,您的標記現在與上面不同了嗎?在堆疊面板上方是水平的。如果不同,請發佈新標記。文本是否超出了堆疊面板的邊界?嘗試在文本塊上設置最大寬度,然後查看它是否包裝。你期待滾動行爲?堆棧面板不會滾動。如果要滾動,請將堆疊面板放在滾動查看器中,然後移除高度屬性。 –

+0

是的,我已經更新了上面的UI代碼,並且呈現此代碼時將出現的用戶界面就像小盒子一樣,彼此相鄰的每個盒子都持有不同長度的文本。所以現在的問題是文字被包裹,並水平居中對齊,但垂直我無法獲得中心對齊,如果我把不同長度的不同文本的保證金我沒有得到完全中心對齊。 –