我想将 TextBlock 和 TextBox 放在一起,但文本内容不对齐:
为什么不? TextBox 是不是像一个带边框的 TextBlock?
预期行为
TextBox 和 TextBlock 的文本内容在水平堆叠时对齐。
版本信息
| Windows 10 版本 | 看到问题了吗? |
| :--------------------------------- | :-------------------- |
| 内幕构建 (xxxxx) | |
| 2018 年 10 月更新 (17763) | X |
| 2018 年 4 月更新 (17134) | |
| 秋季创作者更新 (16299) | |
| 创作者更新 (15063) | |
| 周年更新 (14393) | |
| 设备外形 | 看到问题了吗? |
| :-------------------- | :-------------------- |
| 桌面 | X |
| 手机 | |
| Xbox | |
| Surface Hub | |
| 物联网 | |
附加上下文
<UserControl
x:Class="App.Controls.MyUserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="400">
<Grid Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="Position" VerticalAlignment="Center" Grid.Column="1" Grid.Row="1"/>
<TextBox Text="Position" VerticalAlignment="Center" Grid.Column="2" Grid.Row="1"/>
</Grid>
</UserControl>
间距差异是因为TextBox
为Header
和Description
以及Border
。
奇怪的是,如果这些都被指定并且TextBlock
垂直居中,那么上面例子中的文本是垂直对齐的。
我非常关心这些控件模板中的默认边距(或填充)的任何更改,因此它们确实在给定的场景中排列。
虽然如果它们对齐会很好,但对默认值的任何更改都有可能更改使用这些控件的任何应用程序的布局,这将是任何显示文本的应用程序! 更改还可能会撤消任何已针对当前行为进行调整的应用程序。
虽然当前的行为不受欢迎,但解决方案可能是更容易地使两者对齐(可能使用可应用于 TextBlock 的提供的样式),而不是冒险更改任何默认值的后果。
遗憾的是没有BaselineAlignment选项,因此可以在将来使这些类型的控件的基线对齐。
这看起来是对 1809 年应用的密度更改的回归。我知道几年前在以前的版本中已经完成了跨控件对齐文本的工作。 @mdtauk基线对齐(或其他文本对齐选项)将是一个很棒的功能提案。
在 WinUI2.x 包更新中解决这个回归问题之前,我会看看我是否能想出一个变通办法。
最有用的评论
这看起来是对 1809 年应用的密度更改的回归。我知道几年前在以前的版本中已经完成了跨控件对齐文本的工作。 @mdtauk基线对齐(或其他文本对齐选项)将是一个很棒的功能提案。
在 WinUI2.x 包更新中解决这个回归问题之前,我会看看我是否能想出一个变通办法。