WPFにはTableがあるが知られていないのでは?

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

実は前回のXAMLLoose XAMLなのだが、Silverlightプロジェクトでビルド出来るものだった、今回のコードはWPFプロジェクトでないとビルド出来ない。

単純な表をXAML(※Loose 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">

    <Canvas HorizontalAlignment="Left" VerticalAlignment="top"
       Width="200" Height="200">
    
    <!-- RichTextBoxにFlowDocumentとしてTableを表示する -->
    <RichTextBox Canvas.Top="0" Canvas.Left="0"
        MinWidth="125"  Margin="3,10,3,10" BorderThickness="0">  
        <FlowDocument>
            <Table Padding="1,1,1,1" BorderBrush="DarkGray" BorderThickness="1" >
                <TableRowGroup>
                    <TableRow>
                        <TableCell BorderBrush="DarkGray" BorderThickness="1">
                            <Paragraph Margin="3,5,3,5">テキスト1</Paragraph>
                        </TableCell>
                        <TableCell BorderBrush="DarkGray" BorderThickness="1">
                            <Paragraph Margin="3,5,3,5">テキスト2</Paragraph>
                        </TableCell>
                    </TableRow>
                </TableRowGroup>
                <TableRowGroup>
                    <TableRow>
                        <TableCell BorderBrush="DarkGray" BorderThickness="1">
                            <Paragraph Margin="3,5,3,5">テキスト3</Paragraph>
                        </TableCell>
                        <TableCell BorderBrush="DarkGray" BorderThickness="1">
                            <Paragraph Margin="3,5,3,5">テキスト4</Paragraph>
                        </TableCell>
                    </TableRow>
                </TableRowGroup>
            </Table>
        </FlowDocument>
   </RichTextBox>
   </Canvas>
</Page>

何を思ったか

WPFXAMLでTableを表現する場合、マークアップの構造はHTMLでのtableの表記方法と同じだ。しかしながら、単純な表を表示するだけでこんなにも冗長な記述が必要になる。

HTMLの、ある意味テキトーでも何とかなる仕組みは偉大なイノベーションだったことに感心した。XAMLはデザイナさんには無理だろう、悔しいがHTML+CSSは非常に現実的であり有効なプレゼンテーション定義表記方法だ、広く浸透する技術には判り易さも重要なんだな。

でも時代はXAMLだよ。