在标签外单击时选中wpf复选框

在标签外单击时选中wpf复选框,wpf,checkbox,Wpf,Checkbox,我的复选框宽度似乎延伸到包含它的网格单元的范围。因此,如果您选中复选框标签右侧的方式,它仍然会切换该值。是否有一种方法可以使复选框仅在单击标签或复选框时切换,而不硬编码复选框的宽度值?它可能真的会延伸那么宽。尝试将一些背景应用于复选框-这将显示它在现实中有多宽。还可以使用水平对齐。如果将列定义宽度设置为“自动”,则列的大小将调整为符合复选框的大小 但是,这可能会破坏您的布局 另一种方法是将复选框包装在堆栈面板中 <Grid Margin="10,10,10,10" Name="gr

我的复选框宽度似乎延伸到包含它的网格单元的范围。因此,如果您选中复选框标签右侧的方式,它仍然会切换该值。是否有一种方法可以使复选框仅在单击标签或复选框时切换,而不硬编码复选框的宽度值?

它可能真的会延伸那么宽。尝试将一些背景应用于复选框-这将显示它在现实中有多宽。还可以使用水平对齐。

如果将列定义宽度设置为“自动”,则列的大小将调整为符合
复选框的大小

但是,这可能会破坏您的布局

另一种方法是将
复选框
包装在
堆栈面板

    <Grid Margin="10,10,10,10" Name="grid1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <TextBlock Text="Hello"/>
        <StackPanel Grid.Column="1" Orientation="Horizontal">
            <CheckBox Content="Click Me"/>
        </StackPanel>
        <Button Grid.Column="2" Content="Press Me"/>
    </Grid>

从第一个屏幕截图可以看到,
复选框
的边界框现在正好位于复选框和标签周围,而不是第二个屏幕截图所示的列的全宽

正确的行为:

错误行为:

复选框的默认
水平对齐
拉伸
。尝试将其设置为
/
/
中心