2010-12-05 11 views
6

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

4

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:
correct behaviour
Comportement incorrect:
incorrect behaviour

3

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.

4

La valeur par défaut est HorizontalAlignment de CheckBox Stretch. Essayez de le définir sur Left/Right/Center.