2010-06-24 12 views
0

Voici la mise en page que je veux:Comment implémenter une boîte de groupe WPF plutôt que deux colonnes?

Grille avec 2 colonnes, 2 lignes

ligne 1 doit contenir une zone de groupe qui couvre les deux colonnes. Ligne 2, la colonne 1 contiendra une zone de groupe La ligne 2, Colonne 2 contiendra une autre zone de groupe.

Dans la zone de groupe de la rangée 1, je souhaite que le côté gauche contienne une pile d'étiquettes/de listes déroulantes. Sur le côté droit sera une pile d'étiquettes/cases à cocher. Dans la zone de groupe Ligne 2/Colonne 1, je souhaite que plus d'étiquettes/zones de liste déroulante soient alignées avec les étiquettes/zones de liste déroulante de la première ligne. Dans la zone de groupe Ligne 2/Colonne 2, je veux plus d'étiquettes/cases à cocher qui s'alignent sur les étiquettes/cases à cocher de la première ligne.

Voici ce que j'ai jusqu'à présent. Le problème que je rencontre est que les paires étiquette/zone de liste déroulante dans la boîte de groupe de la ligne 1 veulent couvrir toute la boîte de groupe. Mais, je définis explicitement la ligne = 0, colonne = 0 pour la grille intérieure qui contient les étiquettes/listes déroulantes. Pardonnez-moi si cela ne compile pas, car je saisis à partir d'un imprimé sur un ordinateur sans Studio. Une fois qu'une commande n'est

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/>  
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition/> 
     <ColumnDefinition/> 
    <Grid.ColumnDefinitions> 
    <GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"> 
     <GroupBox.Header> 
     <Label Content="Device Configuration"></Label> 
     </GroupBox.Header> 
     <Grid Grid.Row="0" Column="0"> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition/>  
      <RowDefinition/>  
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     <Grid.ColumnDefinitions> 

     <Label Grid.Column="0" Grid.Row="0" Content="Label 1"></Label> 
     <ComboBox Grid.Column="1" Grid.Row="0"></ComboBox> 

     <Label Grid.Column="0" Grid.Row="1" Content="Label 2"></Label> 
     <ComboBox Grid.Column="1" Grid.Row="1"></ComboBox> 

     <Label Grid.Column="0" Grid.Row="2" Content="Label 3"></Label> 
     <ComboBox Grid.Column="1" Grid.Row="2"></ComboBox> 
     </Grid> 
    </GroupBox> 
</Grid> 

Répondre

1

plus le descendant direct d'une grille, il n'a pas de concept d'être dans le panneau de la grille, et n'est pas formaté en tant que tel. Donc, parce qu'il y a un GroupBox dans le chemin, ce n'est pas un descendant direct de la Grille. Si vous souhaitez que le contenu de GroupBox apparaisse comme faisant partie de la grille la plus haute, vous devrez reproduire cette structure Grid (2 colonnes dans la GroupBox) par vous-même.

Visual Studio ne donne aucune erreur lorsque vous mettez Grid. * Sur des éléments, même si le parent n'est pas une grille.

0

Vous êtes proche. Je ne sais pas si c'est la copie/le passé qui a brisé votre code ou non, mais vous n'étiez pas en train de fermer la balise Grid.ColumnDefinitions. Vous devrez peut-être également reproduire la première grille d'extrémité dans la zone de groupe supérieure si vous souhaitez que les colonnes s'alignent.

<Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 

     <GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"> 
      <GroupBox.Header> 
       <Label Content="Device Configuration"></Label> 
      </GroupBox.Header> 
      <Grid Grid.Row="0" Column="0"> 
       <Grid.RowDefinitions> 
        <RowDefinition/> 
        <RowDefinition/> 
        <RowDefinition/> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition/> 
        <ColumnDefinition/> 
       </Grid.ColumnDefinitions> 

       <Label Grid.Column="0" Grid.Row="0" Content="Label 1"></Label> 
       <ComboBox Grid.Column="1" Grid.Row="0"></ComboBox> 

       <Label Grid.Column="0" Grid.Row="1" Content="Label 2"></Label> 
       <ComboBox Grid.Column="1" Grid.Row="1"></ComboBox> 

       <Label Grid.Column="0" Grid.Row="2" Content="Label 3"></Label> 
       <ComboBox Grid.Column="1" Grid.Row="2"></ComboBox> 
      </Grid> 
     </GroupBox> 

     <GroupBox Grid.Row="1" Grid.Column="0"> 
      <TextBlock>Row 1 Column 0</TextBlock> 
     </GroupBox> 

     <GroupBox Grid.Row="1" Grid.Column="1"> 
      <TextBlock>Row 1 Column 1</TextBlock> 
     </GroupBox> 
    </Grid>