Modo ideale per definire una tabella o una griglia in XML?

1

HTML

<table border="1" width="400">
  <tr>
    <th>Month</th>
    <th>Savings</th>
  </tr>
  <tr>
    <td>January</td>
    <td>$100</td>
  </tr>
  <tr>
    <td>February</td>
    <td>$80</td>
  </tr>
</table>

XAML

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="28" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition Width="200" />
    </Grid.ColumnDefinitions>
    <Label Grid.Row="0" Grid.Column="0" Content="Name:"/>
    <Label Grid.Row="1" Grid.Column="0" Content="E-Mail:"/>
    <Label Grid.Row="2" Grid.Column="0" Content="Comment:"/>
    <TextBox Grid.Column="1" Grid.Row="0" Margin="3" />
    <TextBox Grid.Column="1" Grid.Row="1" Margin="3" />
    <TextBox Grid.Column="1" Grid.Row="2" Margin="3" />
    <Button Grid.Column="1" Grid.Row="3" HorizontalAlignment="Right" 
            MinWidth="80" Margin="3" Content="Send"  />
</Grid>

In HTML, c'è qualche ambiguità su come si imposta la larghezza di una colonna. Devi specificarlo su th / td, ma ci sono più di quelli all'interno della stessa colonna.

WPF risolve questo problema introducendo "definizioni", ma poi devi specificare esplicitamente su quale cella vuoi inserire ogni elemento, aggiungendo un sacco di markup extra. Inoltre, cosa succede se perdi una cella o provi a inserire due elementi nella stessa cella?

Che ne pensi di qualcosa di simile?

<grid>
    <coldefs>
        <coldef width="150" />
        <coldef width="100" />
    </coldefs>
    <rowdefs>
        <rowdef height="50" />
        <remainingrowdef height="auto" />
    </rowdef>

    <cell>Month</cell>
    <cell>Savings</cell>
    <cell>January</cell>
    <cell>$100</cell>
    <cell>February</cell>
    <cell>$80</cell>
</grid>

Dove le celle si riempiono da sinistra a destra, dall'alto verso il basso? Vantaggi svantaggi? Altre opzioni?

Ancora meglio, puoi anche specificare l'ordine di riempimento! Basta aggiungere un argomento extra <grid fill_order="left-right,top-bottom">

    
posta mpen 16.04.2011 - 23:21
fonte

1 risposta

2

Penso che una buona definizione di tabella dovrebbe adattarsi molto bene a XSLT, quindi è possibile ricavare facilmente gli esempi HTML e XAML. La tua proposta sembra buona, forse sarebbe più facile da trasformare:

<grid>
    <coldefs>
        <coldef width="150" />
        <coldef width="100" />
    </coldefs>
    <rowdef height="auto" />

    <row height="50">
        <cell>Month</cell>
        <cell>Savings</cell>
    </row>
    <row>
        <cell>January</cell>
        <cell>$100</cell>
    </row>
    <row>
        <cell>February</cell>
        <cell>$80</cell>
    </row>
</grid>
    
risposta data 30.04.2011 - 14:01
fonte

Leggi altre domande sui tag