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