2012-11-02 7 views
9

Ich entwickle eine WinRT-App in C#, ich verwende eine GridView, um meine Artikel zu präsentieren.GridView Orientierung mit Wrapping in WinRT

Ich mag meine Artikel horizontal und dann angeordnet werden nächste Punkte (wenn die maximale Breite erreicht) auf die neue Zeile hinzugefügt werden (einfach:nur vertikale Scroll-Balken können sichtbar sein).

Leider kann meine aktuellen XAML nur Elemente horizontal in einer Reihe hinzufügen (mit einer horizontalen Bildlaufleiste)

<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

Haben Sie versucht, mit 'WrapGrid' als' ItemsPanelTemplate'? Z.B. ' '? – nemesv

+0

@nemesv. Ja, aber ohne Erfolg – VibeeshanRC

+1

Ich habe nicht win8 zur Hand, aber Sie können auch versuchen, 'ListView' anstelle der 'GridView' mit' WrapGrid' als 'ItemsPanelTemplate' zu ​​verwenden ... – nemesv

Antwort

17

Wenn Sie horizontales Scrollen nicht Sie müssen zulassen wollen ListView verwenden, anstatt GridView,

From MSDN:

Verwenden a Listview eine Sammlung von Daten anzuzeigen, scrollt vertikal. Um eine horizontal scrollende Sammlung anzuzeigen, verwenden Sie eine GridView.

Aber wenn Sie das Wickelverhalten Sie WrapGrid als die ItemsPanel verwenden müssen behalten möchten:

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

@vibeeshanRC ja tat es ohne VS oder win8, was willst du wissen? – nemesv

+0

Nichts, was ich nur schätzen Sie – VibeeshanRC

10

Der Standarditemspaneltemplate eines Gridview enthält eine WrapGrid mit Orientation = „Vertical“: es stapelt vertikale und scrollt horizontal.

Wenn Sie die Ausrichtung in Horizontal ändern, wird es horizontal gestapelt, aber aus irgendeinem Grund nicht scrollen. Sie können dies lösen, indem Sie ScrollViewer.VerticalScrollMode = "Enabled" auf der GridView (nicht auf dem WrapGrid!).

Beispiel:

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

Dies funktioniert nicht. Es erlaubt nur, dass die Rasteransicht auf und ab hüpft, wenn der Benutzer sie wischt. – swinefeaster

+1

Vielleicht folge ich nicht diesem ganzen Thread, aber für mich VS2013 Win Store App einfach WrapGrids Ausrichtung ändern = "Horizontal" hat den Trick! – MemeDeveloper

+1

Ich teste unter Win 8.1, und ich musste auch die Scrollbar-Sichtbarkeit der GridView aktivieren: 'ScrollViewer.VerticalScrollBarVisibility =" Auto "' Dies könnte aber nur für meine Einstellungen spezifisch sein. –