windows - 在 WinRT XAML 中的 GridView 项目组内垂直滚动

标签 windows xaml gridview windows-runtime vertical-scrolling

我正在使用 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>

使用 Grid 确保 ScrollViewer 正确缩放很重要。

关于windows - 在 WinRT XAML 中的 GridView 项目组内垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11135480/

相关文章:

c# - 如何在需要 WPF 应用程序时进行单元测试?

c# - 使用 VisualBrush 作为 OpacityMask

Android GridView 列拉伸(stretch)

android - 将可点击图标(图像)添加到 Android GridView

c# - sql数据源重新绑定(bind)问题

xml - 如何在perfmon中获取同一进程的所有实例

c++ - 将 GPUJPEG 项目移植到 Windows

windows - 用于判断给定二进制文件(EXE 或 DLL)是 x86、x64 还是 ia64 的 Win32 API

c# - 与 ntdll.dll 相关的无法解释的崩溃

c# - 是否可以找到 View 模型引用的属性