9

私は c# で WinRT アプリを開発しています。GridView を使用してアイテムを表示しています。

アイテムを水平に配置し、(最大幅に達したときに) 次のアイテムを新しい行に追加する必要があります (単純に: 垂直スクロールバーのみを表示できます)。

残念ながら、私の現在のxamlは、1行に水平にしかアイテムを追加できません(水平スクロールバーを使用)

<GridView x:Name="GridChildItem" 
                  ItemContainerStyle="{StaticResource NonTickGridViewItem}" 
                  VerticalContentAlignment="Stretch" 
                  ItemTemplate="{StaticResource CustomChildItemTemplete}"
                  SelectionMode="Single" 
                  IsItemClickEnabled="True" 
                  ItemClick="gridViewChild_ItemClick_1"
                  Margin="0,40,0,0" 
                  Height="Auto"
                  Background="{StaticResource DropDownMenuBackColor}" 
                  ScrollViewer.IsHorizontalScrollChainingEnabled="False"
                  ScrollViewer.IsVerticalScrollChainingEnabled ="True"
                  VerticalAlignment="Top">
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" Margin="20,0,0,0" />
                </ItemsPanelTemplate>

           </GridView.ItemsPanel>
 </GridView>
4

2 に答える 2

17

水平スクロールを許可したくない場合は、代わりに使用する必要がありますListViewGridView

MSDN から:

ListViewを使用して、垂直方向にスクロールするデータのコレクションを表示します。水平方向にスクロールするコレクションを表示するには、 GridViewを使用します。

ただし、ラッピング動作を維持したい場合は、WrapGridを次のように使用する必要がありますItemsPanel

<ListView>
     <ListView.ItemsPanel>
          <ItemsPanelTemplate>
                <WrapGrid Orientation="Horizontal" />
           </ItemsPanelTemplate>
     </ListView.ItemsPanel>
</ListView>
于 2012-11-02T10:36:24.153 に答える
10

GridView の既定の ItemsPanelTemplate には、Orientation="Vertical" の WrapGrid が含まれています。これは垂直方向にスタックされ、水平方向にスクロールされます。

Orientation を Horizo​​ntal に変更すると、水平にスタックされますが、何らかの理由でスクロールしません。これは、GridView でScrollViewer.VerticalScrollMode="Enabled" を設定することで解決できます(WrapGrid ではありません!)。

例:

<GridView ScrollViewer.VerticalScrollMode="Enabled">
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapGrid Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
</GridView>
于 2012-11-09T14:49:18.833 に答える