如何在子高度

时间:2017-11-24 12:46:07

标签: c# uwp grid uwp-xaml stackpanel

我有一个堆叠面板,它有另一个堆叠面板,我希望第二个面板位于第一个堆叠面板的中心。我改变了这些面板的方向,垂直对齐无效。

有人为此工作过吗?我想得到你的帮助。

更新

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

2 个答案:

答案 0 :(得分:2)

这里的问题是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>

答案 1 :(得分:0)

试试这个......你必须将父级StackPanel的Orientation设置为Horizo​​ntal。

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