如何将CheckBox与其内容对齐?

Dev*_*Dan 40 silverlight wpf checkbox xaml alignment

WPF CheckBox的外观使检查部分与标签(内容)部分不对齐.支票略高于内容,如下所示:

在此输入图像描述

XAML看起来像这样:

<CheckBox Content="Poorly aligned CheckBox" Margin="9"/>
Run Code Online (Sandbox Code Playgroud)

CheckBox位于Grid单元格内.是否有一种简单的方法来制作内容并检查XAML CheckBox的部分垂直对齐?我尝试了各种属性组合而没有运气.我在这里看到了类似的问题,但答案太复杂了.

提前致谢.

编辑:问题是由我设置为14的Window FontSize引起的.要重新创建问题,请将CheckBox FontSize设置为14(或更多).我的程序是由工厂工人远程查看的,因此我允许用户增加或减少Window FontSize.

Maj*_*jid 56

我知道为时已晚,但这是一个更好的解决方案,没有设置利润.对于不同的高度TextBlock或不同,边距应设置不同Checkbox.

<CheckBox VerticalAlignment="Center" VerticalContentAlignment="Center">
    <TextBlock Text="Well aligned Checkbox" VerticalAlignment="Center" />
</CheckBox>
Run Code Online (Sandbox Code Playgroud)

更新:

值得查看下面的@nmarler评论.

  • 我发现指定`VerticalContentAlignment ="Center"属性就足够了.更紧凑:`<CheckBox Content ="齐全的Checkbox"VerticalContentAlignment ="Center"/>`对我有用 (19认同)
  • 这是最好的答案 (3认同)

Mic*_*elS 26

编辑 - 新答案:(以前不好)

不是我相信的最好的方式,但可以做的工作:

<CheckBox>
    <TextBlock Text="Poorly aligned CheckBox" Margin="0,-2,0,0"/>
</CheckBox>
Run Code Online (Sandbox Code Playgroud)

使用负边距推送内容,结果: 在此输入图像描述


Fre*_*lad 15

一个默认的样式CheckBox在WPF中看起来不像那样.它在XP和Windows 7中完美对齐.您能否更好地描述如何重现此问题?

有两件事情我能想到的,以获得偏移,你看到的是要么改变PaddingVerticalContentAlignment.默认CheckBox的值VerticalContentAlignmentTop和一个CheckBoxContentPadding设置"4,0,0,0".尝试改变这两个,看看它是否有任何区别.

这是一个比较

在此输入图像描述

来自以下Xaml

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <CheckBox Grid.Row="0"
              Content="Poorly aligned CheckBox" Margin="9" />
    <CheckBox Grid.Row="1"
              Content="Padding=4,4,0,0" Margin="9" Padding="4,4,0,0"/>
    <CheckBox Grid.Row="2"
              Content="Vertical Center" Margin="9"
              VerticalContentAlignment="Center"/>
    <CheckBox Grid.Row="3"
              Content="Vertical Top" Margin="9"
              VerticalContentAlignment="Top"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)


Luc*_*asM 7

有一个简单的解决方案,不需要为内容创建文本块,也不需要编写不需要的额外代码。只需使用“ VerticalContentAlignment”。例:

<CheckBox Content="Sample of Text" VerticalContentAlignment="Center"/>
Run Code Online (Sandbox Code Playgroud)