我有一個Windows Store應用頁面中定義一個非常基本的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>
在運行時,勢必myItemsViewSource
的數據出現在GridView
控制,如我所料。
但是,當數據源中的項目多於可以在屏幕上顯示時,我遇到了一個奇怪的滾動問題。滾動條似乎「抵制」我努力以滾動的收集和只是略有移動視口,直到它「休息自由」,我也可以在項目的其餘部分滾動:
同樣的事情發生在回來的路上,由右至左:滾動情況順利,直到我得到足夠接近滾動區域,它會出現在「大棒」再次開始:
認爲這個問題與虛擬化有關,我試着將GridView
的ItemsPanel
更改爲StackPanel
而不是VirtualizingStackPanel
,但是這樣做會阻止顯示任何項目。注意:GridView
不在任何其他滾動區域或畫布中。
我會在下面發佈我的解決方法,但我希望有人有一個更令人滿意的答案。
我得到了同樣的問題。我認爲問題出在錯誤的內部項目模板上。實際上,滾動條不僅是粘性的,而且也是一寸一寸地調整自身。 – Youngjae