Vertical scrolling inside GridView group of items in WinRT XAML
OK, I finally solved it! To whom it may concern:
<GroupStyle.ContainerStyle> <Style TargetType="GroupItem"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="GroupItem"> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <ContentPresenter Content="{TemplateBinding Content}" Grid.Row="0"/> <ItemsControl x:Name="ItemsControl2" ItemsSource="{Binding GroupItems}" Grid.Row="1"> <ItemsControl.Template> <ControlTemplate> <ScrollViewer x:Name="ScrollViewer" VerticalScrollBarVisibility="Hidden" VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Disabled" HorizontalScrollMode="Disabled"> <ItemsPresenter /> </ScrollViewer> </ControlTemplate> </ItemsControl.Template> </ItemsControl> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style></GroupStyle.ContainerStyle>
It's important that you use the Grid to make sure that the ScrollViewer scales correctly.
What about this?
It renders elements like this:
Item 1 Item 2
Item 3 Item 4
<ListView Width="200"> <ListBoxItem> <TextBlock>Item 1</TextBlock> </ListBoxItem> <ListBoxItem> <TextBlock>Item 2</TextBlock> </ListBoxItem> <ListBoxItem> <TextBlock>Item 3</TextBlock> </ListBoxItem> <ListBoxItem> <TextBlock>Item 4</TextBlock> </ListBoxItem> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapGrid Orientation="Horizontal"/> </ItemsPanelTemplate> </ListView.ItemsPanel></ListView>
I would place your elements inside a scroll viewer directly. Like this:
<GroupStyle.Panel> <ItemsPanelTemplate> <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollMode="Disabled" ZoomMode="Disabled" VerticalScrollMode="Enabled"> <StackPanel Orientation="Vertical" Visibility="Visible" /> </ScrollViewer> </ItemsPanelTemplate>
I hope this helps,Lance