2012-11-02 20 views
9

我正在開發WinRT應用程序在c#中,我使用GridView來呈現我的項目。在WinRT中包裝GridView方向

我希望我的物品被水平放置,然後(當達到最大寬度)下一個項目添加到新行(簡單:只有垂直滾動酒吧可以看到)。

不幸的是我目前的XAML只能增加項目的水平在一排(帶有水平滾動條)

<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> 
+0

你試過用'WrapGrid'爲'ItemsPanelTemplate'?例如。 ' '? – nemesv

+0

@nemesv。是的,但沒有成功 – VibeeshanRC

+1

我沒有win8在手,但你也可以嘗試使用'ListView'而不是'GridView'作爲'ItemsPanelTemplate'作爲'WrapGrid' ... – nemesv

回答

17

如果你不想讓你需要使用ListView而不是GridView水平滾動,

From MSDN:

使用的ListView顯示數據的集合垂直滾動 。要顯示水平滾動的集合,請使用 GridView

但是,如果你想保持你需要使用WrapGrid作爲包裝行爲ItemsPanel

<ListView> 
    <ListView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <WrapGrid Orientation="Horizontal" /> 
      </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 
</ListView> 
+0

@vibeeshanRC是沒有VS或WIN8沒有,你想知道什麼? – nemesv

+0

沒有我只是欣賞你 – VibeeshanRC

10

一個GridView的默認ItemsPanelTemplate包含定向一個WrapGrid =「垂直」:它堆積垂直並水平滾動。

如果將方向更改爲水平,它將水平堆疊,但出於某種原因不會滾動。你可以通過在GridView(不在WrapGrid!上)設置ScrollViewer.VerticalScrollMode =「Enabled」來解決這個問題。

例子:

<GridView ScrollViewer.VerticalScrollMode="Enabled"> 
    <GridView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapGrid Orientation="Horizontal" /> 
     </ItemsPanelTemplate> 
    </GridView.ItemsPanel> 
</GridView> 
+0

這不工作。它只是允許網格視圖在用戶滑動時上下彈跳。 – swinefeaster

+1

也許我沒有關注這個主題,但對於我來說,VS2013贏得商店應用程序只需更改WrapGrid的Orientation =「Horizo​​ntal」即可! – MemeDeveloper

+1

我在Win 8.1下測試,我也必須啓用GridView的滾動條可見性:'ScrollViewer.VerticalScrollBarVisibility =「Auto」'這可能只是特定於我的設置。 –