似乎我的复选框宽度拉伸到包含它的网格单元格的范围。因此,如果您检查复选框标签右侧的方式,它仍会切换值。有没有办法让复选框仅在单击标签或复选框时切换,而不对复选框的宽度值进行硬编码?
答案 0 :(得分:4)
如果您将列定义宽度设置为“自动”,则会调整列的大小以适合CheckBox
。
然而,这可能会破坏你的布局。
另一种方法是将CheckBox
包裹在StackPanel
。
<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>
从第一个屏幕截图中可以看出,CheckBox
的边界框现在位于检查和标签的周围,而不是第二个显示的列的整个宽度。
正确的行为:
行为不正确:
答案 1 :(得分:4)
CheckBox的默认HorizontalAlignment
为Stretch
。尝试将其设置为Left
/ Right
/ Center
。
答案 2 :(得分:3)
它可能真的伸展得那么宽。尝试将一些背景应用于CheckBox - 这将显示它在实际中有多宽。也可以使用HorizontalAlignment。