SilverlightにはGridが有るが

簡単なテーブル構造をHTMLとXAMLで記述してみた。

単純な表をHTMLで表示

<html>
  <body>
    <table border=1>
      <tr>
        <td>テキスト1</td>
        <td>テキスト2</td>
      </tr>
      <tr>
        <td>テキスト3</td>
        <td>テキスト4</td>
      </tr>
    </table>
  </body>
</html>

単純な表をXAMLで表示

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Page
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Margin="10">
    
    <!-- テーブルの枠線 -->
    <Border HorizontalAlignment="Left" VerticalAlignment="top"
        BorderThickness="1" BorderBrush="DarkGray">
    
        <!-- テーブル -->
        <Grid>
              
            <!-- テーブル構造 -->
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            
            <!-- テキストの枠線 -->
            <Border Grid.Row="0" Grid.Column="0" Margin="2,2,1,1"
                BorderThickness="1" BorderBrush="DarkGray">
                <!-- テキストブロック -->
                <TextBlock Margin="3,5,3,5">テキスト1</TextBlock>
            </Border>
            
            <Border Grid.Row="0" Grid.Column="1" Margin="1,2,2,1"
                BorderThickness="1" BorderBrush="DarkGray">
                <TextBlock Margin="3,5,3,5">テキスト2</TextBlock>
            </Border>
            
            <Border Grid.Row="1" Grid.Column="0" Margin="2,1,1,2"
                BorderThickness="1" BorderBrush="DarkGray">
                <TextBlock Margin="3,5,3,5">テキスト3</TextBlock>
            </Border>
            
            <Border Grid.Row="1" Grid.Column="1" Margin="1,1,2,2"
                BorderThickness="1" BorderBrush="DarkGray">
                <TextBlock Margin="3,5,3,5">テキスト4</TextBlock>
            </Border>
        </Grid>
    </Border>
</Page>

何がわかったか

HTMLの方が記述が簡単である、改めてHTMLというマークアップ言語が単純で表現力が高いか思い知らされたXAMLは記述が非常に冗長である、レイアウトのバランスを細かく指定する必要がある。

テーブル枠という概念がSilverlightには無い、テーブルの枠線全ての描画指定が必要である。
実際にはHTMLは外観はCSSで定義するので上記のケースの様には行かないが、XAMLは自由度が高い反面、記述は凄まじくメンドクサイのだ。

そもそもテーブルなんてHTMLで表示させりゃいいじゃん?全てXAMLで書きたいのだ。