WPF:对齐Label的基线和TextBox

Hei*_*nzi 31 wpf layout alignment baseline

假设我在Label旁边有一个简单的TextBox:

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label Margin="3">MyLabel</Label>
        <TextBox Margin="3" Width="100">MyText</TextBox>
    </StackPanel>
    ...
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

这产生以下结果:

结果

如您所见,MyLabel和MyText的基线未对齐,看起来很难看.当然,我可以开始玩边缘直到它们匹配,但由于这是一个常见的要求,我确信WPF提供了一个更简单,更优雅的解决方案,我还没有找到...

Dan*_*zey 36

我认为,这种行为是由于TextBox默认为垂直对齐Stretch,导致它填充可用空间并在文本下面有多余像素.如果你改用它:

<StackPanel>
    <StackPanel Orientation="Horizontal">
        <Label >MyLabel</Label>
        <TextBox VerticalAlignment="Center" Width="100">MyText</TextBox>
    </StackPanel>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

......你应该看到更清洁的结果.


Mar*_*ote 20

你怎么看?

替代文字

<StackPanel Orientation="Horizontal">
        <Label Margin="3" VerticalContentAlignment="Center">MyLabel</Label>
        <TextBox Margin="3" VerticalContentAlignment="Center" Width="100">MyText</TextBox>
 </StackPanel>
Run Code Online (Sandbox Code Playgroud)


use*_*116 5

我在 Kaxaml 中实现了这种外观:

<StackPanel Orientation="Horizontal">
  <Label Margin="3" VerticalAlignment="Center">MyLabel</Label>
  <TextBox Margin="3" Width="100" VerticalAlignment="Center">MyText</TextBox>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)