似乎我的复选框宽度延伸到包含它的网格单元格的范围.因此,如果您检查复选框标签右侧的方式,它仍会切换值.有没有办法让复选框仅在单击标签或复选框时切换,而不对复选框的宽度值进行硬编码?
如果将列定义宽度设置为“自动”,则列的大小将调整以适合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>
Run Code Online (Sandbox Code Playgroud)
正如您从第一个屏幕截图中看到的那样,边界框CheckBox现在正好位于支票和标签周围,而不是第二个屏幕截图所示的列的整个宽度。
正确的行为:

不正确的行为:
