2009-09-27 5 views
9

C'è un modo per combinare righe all'interno di una colonna specifica? Quindi, per ottenere qualcosa di simile (Attualmente sto usando rowspan su un controllo cioè immagine, ma c'è un modo migliore?)WPF: come combinare le righe all'interno di una colonna (alternativa a rowspan)?

-------------------- 
    |   |--------| 
    |   |--------| 
    |   |--------| 
    |   |--------| 
    |   |--------| 
    -------------------- 

Sto usando questo codice fondamentalmente

<Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="28" /> 
     <RowDefinition Height="28" /> 
     <RowDefinition Height="28" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="28" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="124" /> 
     <ColumnDefinition Width="246*" /> 
    </Grid.ColumnDefinitions> 

che mi dà qualcosa di simile questo (notare le righe appaiono anche nella colonna 0)

-------------------- 
    |---------|--------| 
    |---------|--------| 
    |---------|--------| 
    |---------|--------| 
    |---------|--------| 
    -------------------- 

ora posso ottenere intorno a questo, ad esempio se voglio inserire un'immagine posso usare RowSpan, ma non è forse possibile progettare una colonna w senza righe e le altre colonne hanno righe?

risposta

11

Questo non è possibile con il controllo Grid. Le righe passano attraverso tutte le colonne e le colonne passano attraverso tutte le righe. Come hai notato, lo RowSpan e lo ColumnSpan consentono di avere un controllo su più righe o colonne rispettivamente.

Un'altra potenziale soluzione è quella di ospitare un Grid all'interno di un altro:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Image/> 

    <Grid Grid.Column="1"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 
    </Grid> 
</Grid> 
+0

Grazie kent, ma suppongo che il codice extra gonfia non ne vale la pena? .. presumo che sia meglio continuare a usare la mia griglia e usare RowSpan ecc. –

+0

@Mark: sì, a giudicare dalla tua descrizione, direi che 'RowSpan' è il modo più semplice per raggiungere il tuo obiettivo. –

1

Che ne dite di qualcosa di simile:

  <StackPanel Orientation="Horizontal"> 
       <Grid Height="100" Width="50"></Grid> 
       <Grid> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
         <RowDefinition Height="*" /> 
        </Grid.RowDefinitions> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="150" /> 
        </Grid.ColumnDefinitions> 
       </Grid> 
      </StackPanel> 
0

tenta di utilizzare rettangolo per unire i 6 righe.

<Grid> 
<Grid.RowDefinitions> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="28" /> 
    <RowDefinition Height="28" /> 
    <RowDefinition Height="28" /> 
    <RowDefinition Height="*" /> 
    <RowDefinition Height="28" /> 
</Grid.RowDefinitions> 
<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="124" /> 
    <ColumnDefinition Width="246*" /> 
</Grid.ColumnDefinitions> 
<Rectangle Grid.RowSpan="6"/> 
</Grid> 
Problemi correlati