しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Canvas は使いにくい

XAML
<Grid>
    <Canvas VerticalAlignment="Center" HorizontalAlignment="Center">
        <Rectangle Fill="Red" Width="200" Height="200"/>
    </Canvas>
</Grid>
実行結果

f:id:shiba-yan:20071230204459p:image
何がしたいかというと、Grid の中心に Canvas (Rectangle) が来てもらいたいのです。しかし Canvas にすると何故か中心に来ない。
DockPanel, WrapPanel, StackPanel などの各種パネルで試したところ、Canvas 以外ではちゃんと中心に来ることを確認。Canvas でも Width と Height を明示的に指定すれば中心に来るけど、今回は指定できないのでどうしようかなぁ。
しかし、位置のずれ方が謎なので何が悪いのかさっぱりわかりません。Canvas は Vertical/HorizontalAlignment を Center にすると、子要素の大きさに自動的になるはずなのに。レイアウト計算の時には何かよくわからない処理が入ってるのかな?