「手間を書けると時間も掛かるし金も掛かる。各種画面モードにXAMLだけでどこまで対応できるかやってみよう」
「なんでXAMLにそれだけこだわるんだよ」
「だって、デザインの奴隷じゃなくて、本質的なC#のコード書きたいじゃないか」
XAMLのコード §
<Grid Grid.Row="1" Margin="120,0,0,0">
<TextBlock FontSize="40">Some Additional Text</TextBlock>
<TextBox Margin="0,50,0,80" x:Name="MyTextBox" Loaded="MyTextBox_Loaded" TextWrapping="Wrap" FontSize="40"></TextBox>
<Button VerticalAlignment="Bottom" FontSize="40">One</Button>
<Button VerticalAlignment="Bottom" HorizontalAlignment="Right" FontSize="40">Two</Button>
</Grid>
「核心部分だけ書き出すとこれだけだな」
「うそー。これだけで、上の全部のレイアウトに対応したの?」
「そういうことになる」
「どこにも条件分けの指定が無いよ。スナップ時の指定はこうするとか、ポートレイト時の指定はこうするとか」
「そんな指定は無いよ」
「なぜ?」
「全部マージンに対する相対指定になっているから。高さや幅の情報はなくて、全部親のコーナーに対する相対指定になっている。最終的に親の親の連鎖は画面サイズに行くから、相対的に全部サイズが決まる」
「これってXAMLになって初めてできたテクニック?」
「違う。Windowsフォームでも、アンカーを上下左右に指定することで、上下左右のコーナーに連動して移動したりサイズが変化するフォームを作成できた。XAMLはその進化形だからだ」
「つまりどういうこと?」
「何もかも絶対座標で指定するのが愚の骨頂。金を無駄に使う早道だ」
「予算を増やせばいいんじゃない?」
「そう思うだろ? でもたいてい予算は増えない」
「じゃあどうすれば……」
「辻褄を合わせるには、機能を減らすしかない」
「泣けてくるような結論だね」
「泣かないためには絶対座標で配置するのはやめておこう」