かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Metro スタイルアプリケーションのコンテンツ領域の大きさ

Metro スタイルアプリケーションでコンテンツを置ける場所って決まってるみたいです。

これに従うようにXAMLを定義すると以下のような感じになりますね。

<Page
    x:Class="Application9.BlankPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:Application9"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <Grid Background="{StaticResource ApplicationPageBackgroundBrush}">
        <Grid.RowDefinitions>
            <RowDefinition Height="140"/>
            <RowDefinition/>
            <RowDefinition Height="130"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="120"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Button Style="{StaticResource BackButtonStyle}" Grid.Row="0" Margin="36,0,0,36" d:LayoutOverrides="Margin"/>
        <TextBlock TextWrapping="Wrap" Text="サンプルアプリケーション" Style="{StaticResource PageHeaderTextStyle}" VerticalAlignment="Bottom" Grid.Column="1" Grid.Row="0" Height="40" d:LayoutOverrides="Margin"/>
        <Border BorderBrush="Black" BorderThickness="1" Grid.Column="1" Grid.Row="1" Background="#FFCAC8FF" d:LayoutOverrides="Margin"/>

    </Grid>
</Page>

Borderを置いてる場所がコンテンツ領域です。

かちっと決まってるってことはタイトルどんなふうに表示しようとかとりあえず悩まなくても平気ということでありがたいですね。