为什么我的WPF单选按钮与中心垂直对齐?

时间:2014-07-29 05:30:41

标签: c# wpf

我有一个WPF项目,我正在尝试使用单选按钮来确定要使用的TextBox输入。但是,当我运行它时,单选按钮本身与容器的顶部对齐,我找不到任何影响它的对齐属性。这种行为有望吗?我一直在寻找答案,但似乎一切都在询问如何垂直对齐单选按钮。我的假设是它与我如何嵌套在其他控件中有关,但是如何在不改变太多的情况下使其工作?

这是与单选按钮相关的xaml:

<DockPanel Grid.Column="1" Margin="5,0,0,0">
  <RadioButton HorizontalContentAlignment="Stretch" DockPanel.Dock="Top" IsChecked="True">
    <xctk:TimePicker Name="TimePickerBox" Margin="0" Format="LongTime"
                     VerticalAlignment="Center"/>
  </RadioButton>
  <RadioButton Margin="0,5,0,0" DockPanel.Dock="Top">
    <StackPanel Orientation="Horizontal">
      <TextBox Name="Hours" Width="30" VerticalAlignment="Center">0</TextBox>
      <Label>Hours</Label>
      <TextBox Name="Minutes" Width="30" VerticalAlignment="Center">0</TextBox>
      <Label>Minutes</Label>
      <TextBox Name="Seconds" Width="30" VerticalAlignment="Center">0</TextBox>
      <Label>Seconds</Label>
    </StackPanel>
  </RadioButton>
// ...

这就是它的样子:

Radio button alignment

如何让单选按钮垂直居中?

4 个答案:

答案 0 :(得分:28)

为RadioButton设置 VerticalContentAlignment Center

<RadioButton Margin="0,5,0,0" DockPanel.Dock="Top"
             VerticalContentAlignment="Center">
  .....
</RadioButton>

答案 1 :(得分:3)

RadioButton个元素上,尝试添加VerticalAlignment="Top" VerticalContentAlignment="Center"。我在一个测试项目中做到了这一点,似乎可以解决这个问题。

答案 2 :(得分:0)

我真的不记得DockPanel.Dock做了什么,但尝试将StackPanel的{​​{1}}设置为VerticalAligment,如果没有帮助也设置Center {1}}至DockPanel.Dock

Center

答案 3 :(得分:0)

我复制了你的XAML,它完全符合你的要求。因此,似乎可能还有其他原因 请注意,radioButtons Bullet将始终与其内部文本块的第一行对齐 如需进一步阅读,请参阅此 How do I make a RadioButton's Bullet align top?获得解释。