我使用GridView在WinRT XAML应用程序中显示不同项目组的组.一切都很好,除了ItemsPanelTemplate使用一个包装网格,当它在空间外时垂直堆叠我的项目.
所以,我尝试使用StackPanel,如下所示:
<GroupStyle.Panel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" Visibility="Visible" />
</ItemsPanelTemplate>
</GroupStyle.Panel>
这些项目是垂直堆叠的,这很好,但问题是我现在无法滚动它们,并且它们不适合屏幕.所以我尝试启用垂直滚动:
<GroupStyle.Panel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" Visibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollMode="Enabled"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
但这不起作用.
有关如何在GridView组内完成垂直滚动的任何建议?
编辑1:
我也试过这个:
<GroupStyle.Panel>
<ItemsPanelTemplate>
<ScrollViewer VerticalScrollBarVisibility="Visible"
HorizontalScrollMode="disabled"
ZoomMode="disabled"
VerticalScrollMode="Enabled">
<StackPanel Orientation="Vertical" Visibility="Visible" />
</ScrollViewer>
</ItemsPanelTemplate>
</GroupStyle.Panel>
这会打破调试器,因为ItemsPanelTemplate需要一个面板作为子面板.
好的,我终于解决了!敬启者:
<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>
使用网格确保ScrollViewer正确缩放非常重要.