2012-11-02 11 views
9

Tôi đang phát triển một ứng dụng WinRT trong C#, tôi đang sử dụng GridView để trình bày mục của tôi.Định hướng GridView với Gói trong WinRT

Tôi muốn mục của tôi để được sắp xếp theo chiều ngang và sau đó (khi đạt chiều rộng tối đa) các mặt hàng tiếp theo sẽ được bổ sung vào dòng mới (Đơn giản chỉ cần:chỉ dọc cuộn quán bar có thể được hiển thị).

Thật không may XAML hiện tại của tôi chỉ có thể thêm các mục ngang trong một hàng (với một thanh cuộn ngang)

<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

Các bạn đã thử với 'WrapGrid' là' ItemsPanelTemplate'? Ví dụ. ' '? – nemesv

+0

@nemesv. Có nhưng không thành công – VibeeshanRC

+1

Tôi không có win8 ở bàn tay nhưng bạn cũng có thể thử sử dụng 'ListView' thay vì' GridView' với 'WrapGrid' là' ItemsPanelTemplate' ... – nemesv

Trả lời

17

Nếu bạn không muốn cho phép cuộn ngang bạn cần phải sử dụng ListView thay vì GridView,

From MSDN:

Sử dụng một ListView để hiển thị một tập hợp các dữ liệu mà cuộn theo chiều dọc. Để hiển thị bộ sưu tập cuộn theo chiều ngang, hãy sử dụng GridView.

Nhưng nếu bạn muốn giữ lại các gói hành vi bạn cần phải sử dụng WrapGrid như ItemsPanel:

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

@vibeeshanRC có làm điều đó mà không cần VS hoặc win8, bạn muốn biết điều gì? – nemesv

+0

Không có gì tôi chỉ đánh giá cao bạn – VibeeshanRC

10

Giá trị mặc định ItemsPanelTemplate của một GridView chứa một WrapGrid với Định hướng = "Vertical": nó ngăn xếp dọc và cuộn ngang.

Nếu bạn thay đổi hướng sang ngang, nó sẽ chồng ngang, nhưng vì một lý do nào đó sẽ không cuộn. Bạn có thể giải quyết điều đó bằng cách đặt ScrollViewer.VerticalScrollMode = "Đã bật" trên GridView (không phải trên WrapGrid!).

Ví dụ:

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

Điều này không hoạt động. Nó chỉ cho phép chế độ xem lưới bật lên và xuống khi người dùng vuốt nó. – swinefeaster

+1

Có lẽ tôi không theo tất cả các chủ đề này, nhưng đối với tôi VS2013 giành chiến thắng cửa hàng ứng dụng chỉ đơn giản là thay đổi WrapGrid của Orientation = "ngang" đã làm các trick! – MemeDeveloper

+1

Tôi đang thử nghiệm theo Win 8.1, và tôi cũng đã phải kích hoạt khả năng hiển thị thanh cuộn của GridView: 'ScrollViewer.VerticalScrollBarVisibility =" Auto "' Điều này chỉ có thể được cụ thể cho các thiết lập của tôi mặc dù. –