【发布时间】:2016-03-03 00:55:58
【问题描述】:
似乎我的复选框宽度延伸到包含它的网格单元格的范围。因此,如果您检查复选框标签右侧的方式,它仍然会切换值。有没有办法让复选框只在单击标签或复选框时才切换,而不用硬编码复选框的宽度值?
【问题讨论】:
似乎我的复选框宽度延伸到包含它的网格单元格的范围。因此,如果您检查复选框标签右侧的方式,它仍然会切换值。有没有办法让复选框只在单击标签或复选框时才切换,而不用硬编码复选框的宽度值?
【问题讨论】:
如果您将列定义宽度设置为“自动”,那么列将调整大小以适应 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 的边界框现在就在检查和标签周围,而不是第二个显示的列的整个宽度。
正确行为:
错误行为:
【讨论】:
CheckBox 的默认HorizontalAlignment 是Stretch。尝试将其设置为Left/Right/Center。
【讨论】:
它可能真的伸展得那么宽。尝试为 CheckBox 应用一些背景 - 这将向您展示它实际上有多宽。也可以使用 HorizontalAlignment。
【讨论】: