2014-07-18 15 views
1

在我的WPF應用程序中,我有一個DataGridDataGridTemplateColumns。其中一列是這樣的:豎排排列TextPanel StackPanel內

<DataGridTemplateColumn Header="Column" Width="*"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ListBox ItemsSource="{Binding SomeSource}"> 
       <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
         <StackPanel Orientation="Horizontal" Margin="5"/> 
        </ItemsPanelTemplate>  
       </ListBox.ItemsPanel>   
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <Border BorderBrush="Green" HorizontalAlignment="Center" VerticalAlignment="Center" CornerRadius="6" BorderThickness="2"> 
          <StackPanel Background="Green" Width="200" Height="150"> 
           <TextBlock Text="{Binding Title}" HorizontalAlignment="Center" FontSize="17" FontWeight="Bold" /> 
          </StackPanel> 
         </Border> 
        </DataTemplate> 
       </ListBox.ItemTemplate>   
      </ListBox> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

這將產生以下的輸出:

enter image description here

正如你可以看到它顯示Title不垂直綠色StackPanel內居中TextBlock。我怎樣才能做到這一點?

+1

刪除StackPanel。這完全不需要,它不會讓你垂直居中文本。 –

+0

刪除哪個堆疊面板? –

+3

'' - 刪除它。 –

回答

1

StackPanel沒有它的高度的概念,所以你不能垂直對齊它的孩子。你必須做一些不同的事情。

<Border Background="Green" Height="150" BorderBrush="Green" HorizontalAlignment="Center" VerticalAlignment="Center" CornerRadius="6" BorderThickness="2"> 
    <StackPanel Width="200" VerticalAlignment="Center"> 
     <TextBlock Text="{Binding}" HorizontalAlignment="Center" FontSize="17" FontWeight="Bold" /> 
    </StackPanel> 
</Border> 

(這不是真的清楚: -

例如,移動從StackPanel的固定150的高度和背景其父邊界這種方式,您可以在邊框內垂直對齊的StackPanel爲什麼你使用內部的StackPanel,因爲它只有一個孩子,但我認爲你會添加其他東西。)