2

本当に大きなグリッドを持つ Windows 8 用のアプリを作成したいと考えています。
ユーザーは、このグリッドを水平方向にスクロールできる必要があります。

ただし、画面の幅を解像度ウィジェットよりも大きい数値に定義しても、グリッドは画面の真ん中に表示されます。

スクリーンショットは次のとおりです。

ここに画像の説明を入力

見やすいように、Aqua のメイン グリッドの境界線に色を付けました

また、動的グリッドの背景を青色に着色しました。

これは XAML です。

<Page.Resources>

    <!-- Auflistung von Elementen, die von dieser Seite angezeigt werden -->
    <CollectionViewSource
        x:Name="itemsViewSource"
        Source="{Binding Items}"/>

    <!-- TODO: Diese Zeile löschen, wenn der Schlüssel "AppName" in "App.xaml" deklariert ist -->
    <x:String x:Key="AppName">My Application</x:String>
</Page.Resources>

<!--
    Dieses Raster fungiert als Stammbereich für die Seite, die zwei Zeilen definiert:
    * Zeile 0 enthält die Schaltfläche "Zurück" und den Seitentitel.
    * Zeile 1 enthält den Rest des Seitenlayouts.
-->
<Grid Style="{StaticResource LayoutRootStyle}">
    <Grid.RowDefinitions>
        <RowDefinition Height="140"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!-- Schaltfläche "Zurück" und Seitentitel -->
    <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}"/>
        <Button Content="Button" Grid.Column="1" HorizontalAlignment="Left" Margin="705,92,0,0" VerticalAlignment="Top" Click="Button_Click_1"/>
    </Grid>

    <!-- Raster mit horizontalem Bildlauf (wird in den meisten Ansichtsstatus verwendet) -->
    <GridView
        x:Name="itemGridView"
        TabIndex="1"
        Grid.Row="1"
        Grid.Column="0"
        Margin="0,-4,0,0"
        Padding="116,0,116,46" Grid.ColumnSpan="1" SelectionMode="None" BorderThickness="3" BorderBrush="Aqua"/>

これが C# です。

this.InitializeComponent();

this.itemGridView.FlowDirection = Windows.UI.Xaml.FlowDirection.LeftToRight;
this.itemGridView.ItemContainerStyle = null;

pageTitle.Text = startFolder.name;
Windows.UI.Xaml.Thickness th = new Thickness(0, 0, 0, 0);
this.Margin = th;

this.itemGridView.Margin = th;
this.itemGridView.Width = 2000;
4

2 に答える 2

2

バート、アプリのランディング グリッド ページを開発しているときに同じ問題が発生しました。メイン グリッドで ColumnDefinitions を定義していないため、Grid.Column は XAML で使用しないでください。ページ タイトルと [戻る] ボタンにのみ使用されるため、columndefinition を持つグリッドと混同しないでください。

グリッド ビューの XAML は次のようになります。

<!-- Horizontal scrolling grid used in most view states -->
    <GridView
        x:Name="itemGridView"
        AutomationProperties.AutomationId="ItemsGridView"
        AutomationProperties.Name="Items"
        TabIndex="1"
        Grid.RowSpan="2"
        Padding="116,136,116,46"
        ItemsSource="{Binding Source={StaticResource itemsViewSource}}"
        ItemTemplate="{StaticResource DefaultGridItemTemplate}"
        SelectionMode="None"
        IsSwipeEnabled="false"
        IsItemClickEnabled="True" 
        ItemClick="ItemView_ItemClick"/>

C# コードでは、次の行だけをすべて削除します。

this.InitializeComponent();      
于 2012-10-02T17:57:12.707 に答える
0

GridView は、コンテンツを追加するにつれて大きくなります。バインドされているものと、既にそこにあるボックスがどのように表示されているかを示していません。

itemsViewSource にさらに項目が含まれている場合、それらは GridView に表示され、スクロールしてすべてが表示されます。

于 2012-10-01T11:25:30.700 に答える