如何在其父项高度的中心垂直对齐子项

how to vertically align a child item in centre of its parent height

我有一个堆栈面板,它有另一个堆栈面板,我希望第二个面板位于第一个堆栈的中心 panel.I 更改了这些面板的方向和垂直对齐没有任何效果..

有人研究过这个吗?我想得到你的帮助。

更新:

 <StackPanel Grid.Row="0" Grid.RowSpan="4" Background="White" Visibility="Visible" Orientation="Vertical">

                <StackPanel VerticalAlignment="Center" Grid.Row="0">
                    <ProgressBar Margin="0,15,0,0"
                     IsIndeterminate="True" 
                     IsEnabled="True" Foreground="Black"/>
                    <TextBlock Visibility="Visible" Margin="6,6,6,15" Foreground="Black" FontSize="21" TextWrapping="WrapWholeWords" HorizontalAlignment="Center" Text="Loading..."/>
                </StackPanel>
        </StackPanel>

试试这个...您必须将父级 StackPanel 的方向设置为水平。

<StackPanel Grid.Row="0" Grid.RowSpan="4" Background="White" Visibility="Visible" Orientation="Horizontal">

                <StackPanel VerticalAlignment="Center" Grid.Row="0">
                    <ProgressBar Margin="0,15,0,0"
                     IsIndeterminate="True" 
                     IsEnabled="True" Foreground="Black"/>
                    <TextBlock Visibility="Visible" Margin="6,6,6,15" Foreground="Black" FontSize="21" TextWrapping="WrapWholeWords" HorizontalAlignment="Center" Text="Loading..."/>
                </StackPanel>
        </StackPanel>

这里的问题是StackPanel。堆叠面板的作用是从一侧(顶部、左侧...)堆叠项目,因此无法将项目完全居中 StackPanel。当项目垂直堆叠时,VerticalAlignment 属性 对面板的直接子项没有影响。这同样适用于 HorizontalAlignment 和水平堆叠。

您应该使用 GridBorder 来居中项目(我还删除了 Visibility 值,因为 Visible 是默认状态):

<Grid Grid.Row="0"
      Grid.RowSpan="4"
      Background="White"
      >
    <StackPanel HorizontalAlignment="Center"
                VerticalAlignment="Center"
                Grid.Row="0"
                >
        <ProgressBar Margin="0,15,0,0"
                     IsIndeterminate="True" 
                     IsEnabled="True"
                     Foreground="Black"
                     />
        <TextBlock Margin="6,6,6,15"
                   Foreground="Black"
                   FontSize="21"
                   TextWrapping="WrapWholeWords"
                   HorizontalAlignment="Center"
                   Text="Loading..."
                   />
    </StackPanel>
</Grid>