gpt4 book ai didi

gridview - WinRT XAML GridView 控件中的 "Sticky scrolling"问题

转载 作者:行者123 更新时间:2023-12-02 19:41:18 25 4
gpt4 key购买 nike

我在 Windows 应用商店应用程序页面中定义了一个非常基本的 GridView 控件,如下所示:

    <GridView
x:Name="myGridView"
Grid.RowSpan="2"
Padding="30,137,40,46"
ItemsSource="{Binding Source={StaticResource myItemsViewSource}}"
ItemTemplate="{StaticResource My500x500ItemTemplate}"
SelectionMode="Multiple"
IsSwipeEnabled="True"
IsItemClickEnabled="True">

<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<Grid Margin="1,0,0,6">
<Button
Style="{StaticResource TextPrimaryButtonStyle}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Title}" Margin="3,-7,10,10" Style="{StaticResource GroupHeaderTextStyle}" />
<TextBlock Text="{StaticResource ChevronGlyph}" FontFamily="Segoe UI Symbol" Margin="0,-7,0,10" Style="{StaticResource GroupHeaderTextStyle}"/>
</StackPanel>
</Button>
</Grid>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</GridView.GroupStyle>
</GridView>

在运行时,绑定(bind)到 myItemsViewSource 的数据如我所料地出现在 GridView 控件中。

但是,当数据源中的项目多于屏幕上可以显示的项目时,我遇到了奇怪的滚动问题。滚动条似乎“抵制”我滚动集合的努力,并且仅稍微移动视口(viewport),直到它“挣脱”,我可以滚动浏览其余项目:

demonstration of problem scrolling right

demonstration of smooth scrolling beyond the sticking point

同样的事情发生在返回的路上,从右到左:滚动顺利进行,直到我足够接近滚动区域的开头,它似乎再次“粘住”:

demonstration of problem scrolling left

认为问题与虚拟化有关,我尝试将 GridViewItemsPanel 更改为 StackPanel 而不是 code>VirtualizingStackPanel,但这会产生更糟糕的效果,阻止显示任何项目。注意:GridView 不托管在任何其他滚动区域或 Canvas 中。

我将在下面发布我的解决方法,但我希望有人能得到更令人满意的答案。

最佳答案

您应该删除实际 GridView 上的左边距和填充,并将其添加到 ItemsPanel 声明中。有点令人困惑,因为默认模板确实在 GridView 上设置了填充。

这里是 GridView 的开始部分,它附带了默认模板,其中我对 GridView 控件上的填充进行了编辑,并在 VirtualizingStackPanel ItemsPanel 声明上设置了边距。

<GridView
x:Name="itemGridView"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Grouped Items"
Grid.RowSpan="2"
Padding="0,137,40,46"
ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
ItemTemplate="{StaticResource Standard250x250ItemTemplate}"
SelectionMode="None"
IsSwipeEnabled="false"
IsItemClickEnabled="True"
ItemClick="ItemView_ItemClick">

<GridView.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Margin="116,0,0,0" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</GridView.ItemsPanel>

关于gridview - WinRT XAML GridView 控件中的 "Sticky scrolling"问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13332266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com