簡體   English   中英

在StackPanel內部垂直對齊TextBlock

[英]Aligning TextBlock Vertically Inside StackPanel

在我的WPF應用程序我有一個DataGrid有多個DataGridTemplateColumns 列之一如下所示:

<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>

這將產生以下輸出:

在此處輸入圖片說明

如您所見,顯示TitleTextBlock不在綠色StackPanel垂直居中。 我怎樣才能做到這一點?

StackPanel沒有高度的概念,因此您無法垂直對齊其子級。 您必須做一些不同的事情。

例如,將固定的150高度和背景從StackPanel移至其父邊框-這樣,您可以在Border內垂直對齊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,因為它只有一個孩子,但是我假設您要為其添加其他內容。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM