这个问题并不像看起来那么微不足道,而且公认的答案缺乏细节。如果您尝试使用控件自定义高度,您会看到问题。
首先,这是 User7116 回答的正确实现。
<StackPanel Orientation="Horizontal">
<Label Margin="3" VerticalAlignment="Center">MyLabel</Label>
<TextBox Margin="3" Width="100" VerticalAlignment="Center">MyText</TextBox>
</StackPanel>
棘手的部分是这里有两级垂直对齐,所以要了解对齐是如何工作的。
当我们为控件指定对齐方式时,我们是在告诉它如何在父容器中定位自己(参见文档)。因此,当我们指定VerticalAlignment="Center">
时,TextBox
我们告诉它这个 TextBox 应该垂直居中显示在 parent 中stackpanel
。
现在该 TextBox 内的实际文本也可以在该 TextBox内使用垂直对齐!这是第 2 级,实际上非常棘手,在这里得到了回答。
如果您尝试将上方标签的高度也设置为 50,您会发现它们不会再次对齐。这是因为 Label 现在占用了更大的区域,并且该区域内的文本未垂直对齐,因此看起来不再对齐。

上面的代码是:
<StackPanel Orientation="Horizontal" VerticalAlignment="Center">
<Label Margin="3" VerticalAlignment="Center" Height="50">MyLabel</Label>
<TextBox Margin="3" VerticalAlignment="Center" Width="50" Height="50">MyText</TextBox>
</StackPanel>
幸运的是,当控件高度为默认值时(如标签控件),它的高度足以包含文本,因此内部对齐无关紧要。但是,如果有人为这些控件设置自定义高度,它就会发挥作用,并且最好了解它是如何工作的。