【发布时间】:2017-04-17 23:26:47
【问题描述】:
我正在尝试为一组带有标签的控件找出一个不错的布局。例如,如果我在文本框的左侧有一个标签,则标签的基线和文本框不在同一垂直位置。通常的解决方法是将两个控件垂直居中,但如果您有多行文本框控件,这看起来不太好。
我有几个组合。
我希望相对面板能够提供对齐基线的选项,就像它与 android 相对布局面板一样。不幸的是,它没有。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<RelativePanel>
<TextBlock Text="Name:" Name="t1"></TextBlock>
<TextBox Text="Content" RelativePanel.RightOf="t1" ></TextBox>
</RelativePanel>
</Grid>
网格也无济于事。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="{x:Bind Label}" Style="{ThemeResource BaseTextBlockStyle}"/>
<TextBox Grid.Column="1" Text="Content" HorizontalAlignment="Stretch"></TextBox>
</Grid>
</Grid>
显然,水平堆栈面板也没有什么魔力。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel Orientation="Horizontal">
<TextBlock Grid.Column="0" Text="{x:Bind Label}" Style="{ThemeResource BaseTextBlockStyle}"/>
<TextBox Grid.Column="1" Text="Content" VerticalAlignment="Top"></TextBox>
</StackPanel>
</Grid>
垂直的堆栈面板可以避免这个问题,但我更喜欢控件左侧的标签。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel Orientation="Vertical">
<TextBlock Grid.Column="0" Text="{x:Bind Label}" Style="{ThemeResource BaseTextBlockStyle}"/>
<TextBox Grid.Column="1" Text="Content" ></TextBox>
</StackPanel>
</Grid>
您对如何对齐基线有任何想法吗?这对于很多输入控件和标签来说是/或者可能是一个不错的布局想法?
【问题讨论】:
-
VerticalAlignment="Center"forTextboxin HorizontalStackPanel应该可以解决问题