2013-10-09 82 views
1

我總是遇到在windows phone中定位元素的問題。希望有人能幫助我: 我有一個列表框dinamically從代碼populatem背後:在ItemTemplate中定位文本 - Windows Phone 8

<ListBox Name="list" Grid.Row="1" HorizontalAlignment="Center"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Name}" Style="{StaticResource list_service_item}"/> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 

風格在App.xaml中定義:

<Style x:Key="list_service_item" TargetType="TextBlock"> 
     <Setter Property="FontSize" Value="25"/> 
     <Setter Property="FontWeight" Value="Bold"/> 
     <Setter Property="Foreground" Value="Peru" /> 
     <Setter Property="TextWrapping" Value="Wrap"/> 
     <Setter Property="HorizontalAlignment" Value="Center"/> 
     <Setter Property="Margin" Value="0 0 0 5"/> 
    </Style> 

貌似除了正常工作對齊屬性。

如果列表框項具有相同的長度一切運作良好,但是,如果他們中的一個較長所有其他贊同的長項的開始,而不是保持居中:

enter image description here

如何我能解決這個問題嗎?

+0

你肯定* *,他們正在調整到較長的項目開始而不僅僅是集中,而是巧合地與長項目的開始排隊?你能向我們展示一張圖片嗎? – Sheridan

+0

這是一個[截圖](http://i338.photobucket.com/albums/n430/jack_the_beast/items.png) –

回答

1

你需要做ItemContainer每個ListBoxItem的拉伸到列表框的寬度:

<ListBox.ItemContainerStyle> 
    <Style TargetType="ListBoxItem"> 
    <Setter Property="HorizontalContentAlignment" 
      Value="Stretch" /> 
    </Style> 
</ListBox.ItemContainerStyle> 
+0

謝謝你的工作 –

0

如何使用TextBlock.TextAlignment財產?:

<Style x:Key="list_service_item" TargetType="TextBlock"> 
    <Setter Property="FontSize" Value="25" /> 
    <Setter Property="FontWeight" Value="Bold" /> 
    <Setter Property="Foreground" Value="Peru" /> 
    <Setter Property="TextWrapping" Value="Wrap" /> 
    <Setter Property="HorizontalAlignment" Value="Center" /> 
    <Setter Property="TextBlock.TextAlignment" Value="Center" /><!--<<< Used here--> 
    <Setter Property="Margin" Value="0 0 0 5"/> 
</Style> 

免責聲明:本工程爲WPF,但我不能保證它適用於Windows Phone 8的

UPDATE >> >

好的,看到你的照片後,我會同意它不能按照你的預期工作。但是,我認爲這可能是更多的情況下,項目沒有正確放置。你可以試試這個:

<ListBox HorizontalContentAlignment="Center" ... /> 

如果不工作,你可以試試屬性設置爲Stretch,這樣的項目填補了空間,那麼可以給TextBlock S中居中自己:

<ListBox HorizontalContentAlignment="Stretch" ... /> 
+0

不行......它不起作用... –

+0

這個解決方案似乎對齊所有項目到左邊......我不知道爲什麼......但是我用Doc的答案解決了。非常感謝你:) –