2010-12-05 9 views
6

Es scheint, dass die Breite meiner Checkbox bis zu den Ausmaßen der Gitterzelle reicht, in der sie enthalten ist. Wenn Sie also rechts neben der Beschriftung des Kontrollkästchens nachsehen, wird der Wert immer noch umgeschaltet. Gibt es eine Möglichkeit, das Kontrollkästchen nur dann umzuschalten, wenn das Label oder das Kontrollkästchen angeklickt wird, ohne einen Wert für die Breite des Kontrollkästchens festzulegen?wpf-Kontrollkästchen ausgewählt, wenn außerhalb des Labels geklickt wird

Antwort

4

Wenn Sie die Spaltendefinitionsbreite auf "Auto" setzen, wird die Größe der Spalte so angepasst, dass sie in die CheckBox passt.

Allerdings könnte das Ihr Layout ruinieren.

Eine Alternative besteht darin, die CheckBox in eine StackPanel zu wickeln.

<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> 

Wie Sie aus dem ersten Screenshot sehen können, ist der Begrenzungsrahmen der CheckBox jetzt nur um die Kontrolle und Label im Gegensatz zu der vollen Breite der Spalte ist, wie durch die zweite gezeigt.

Richtiges Verhalten:
correct behaviour
Falsches Verhalten:
incorrect behaviour

3

Es kann wirklich so weit strecken. Versuchen Sie etwas Hintergrund auf die CheckBox anzuwenden - dies zeigt Ihnen, wie breit es in der Realität ist. Spielen Sie auch mit HorizontalAlignment.

4

Der Standard HorizontalAlignment von CheckBox Stretch ist. Versuchen Sie es auf Left/Right/Center einzustellen.

Verwandte Themen