0

簡単にするために VisualStateManager コードを取り除くと、Windows 8 アプリの基本ページの XAML は次のようになります。

<!-- Back button and page title -->
<Grid> //row 0 by default
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
    <TextBlock x:Name="pageTitle" Grid.Column="1" Text="Account Basic Info" Style="{StaticResource PageHeaderTextStyle}"/>
</Grid>

// VisualStateManager の祭典は省略されました

したがって、私がそれを読む方法は、グリッド内にグリッドがあり、内側のグリッドが最初のグリッドの行 0 にあるということです。内側のグリッドは最初の行に 2 つの列を追加し、ボタン (デフォルトでは列 0) とテキストブロックを列 1 に配置します。

ページにさらにコントロールを追加したいのですが、これまでのところすべての試み/実験は失敗しています (外側のグリッドに行を追加してから、内側のグリッドに行を追加します)。さらに別の内部グリッド (最初の内部グリッドの内側) を追加するのは少しばかげているように思えます。これをやってのける標準的な方法は何ですか(とにかく「a」方法)?

4

1 に答える 1

1

ご指摘のとおり、行ゼロ グリッドの後に別のグリッド (または StackPanel) を追加できます。

<Grid Grid.Row="1">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Button x:Name="backButton2" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
    <TextBlock x:Name="pageTitle2" Grid.Column="1" Text="{StaticResource AppName}" Style="{StaticResource PageHeaderTextStyle}"/>
</Grid>

これを行う別の方法は、最初のグリッドでさらに行を定義することです。

<Grid.RowDefinitions>
    <!-- notice there are 4 rows now -->
    <RowDefinition Height="140"/>
    <RowDefinition Height="140"/>
    <RowDefinition Height="140"/>
    <RowDefinition Height="*"/>
</Grid.RowDefinitions>

<!-- Back button and page title -->
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
    <TextBlock x:Name="pageTitle" Grid.Column="1" Text="{StaticResource AppName}" Style="{StaticResource PageHeaderTextStyle}"/>
</Grid>

<!-- My controls are placed in explict rows using Grid.Row -->
<Button x:Name="backButton2" Grid.Row="1" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
<TextBlock x:Name="pageTitle2" Grid.Row="2" Text="{StaticResource AppName}" Style="{StaticResource PageHeaderTextStyle}"/>
<Button x:Name="backButton3" Grid.Row="3" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>
于 2013-02-04T04:24:27.410 に答える