<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>
<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>
HTMLでは、列の幅を設定する方法にあいまいさがあります。 th/tdで指定する必要がありますが、同じ列内に複数あります。
WPFは「定義」を導入することでこの問題を解決しますが、各要素を挿入するセルを明示的に指定する必要があり、多くのマークアップが追加されます。また、セルを見逃したり、2つの要素を同じセルに入れようとしたりするとどうなりますか?
このようなものはどうですか?
<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>
セルが左から右、上から下に塗りつぶされるところはどこですか?長所短所?その他のオプション?
さらに良いことに、フィルオーダーも指定できます!引数を追加するだけです<grid fill_order="left-right,top-bottom">
HTMLとXAMLの例を簡単に導き出すことができるように、適切なテーブル定義はXSLTに非常によく適合するはずだと思います。あなたの提案は良さそうです、多分これは変換するのがより簡単でしょう:
<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>