Il semble que la largeur de ma case à cocher s'étende jusqu'aux limites de la cellule de la grille dans laquelle elle est contenue. Donc, si vous cochez la case à droite de l'étiquette de la case à cocher, la valeur reste active. Y at-il un moyen de rendre la case à cocher uniquement lorsque l'étiquette ou la case à cocher est cliquée sans coder en dur une valeur de largeur pour la case à cocher?wpf case à cocher sélectionnée lorsque vous cliquez à l'extérieur de l'étiquette
Répondre
Si vous définissez la largeur de votre définition de colonne sur "Auto", la colonne sera redimensionnée pour correspondre à CheckBox
.
Cependant, cela pourrait ruiner votre mise en page.
Une alternative consiste à envelopper le CheckBox
dans un 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>
Comme vous pouvez le voir sur la première capture d'écran, la zone de délimitation de la CheckBox
est maintenant juste autour du contrôle et de l'étiquette, par opposition à la largeur de la colonne comme indiqué par le second.
Comportement correct:
Comportement incorrect:
Il peut vraiment s'étirer aussi large. Essayez d'appliquer un peu d'arrière-plan à la CheckBox - cela vous montrera à quel point il est large dans la réalité. Joue aussi avec HorizontalAlignment.
La valeur par défaut est HorizontalAlignment
de CheckBox Stretch
. Essayez de le définir sur Left
/Right
/Center
.