我们知道ListView有一个Header
属性,可以让您自定义它可以滚动到ScrollViewer区域的标题。
但是,如果ListView
中的PivotItem
(假设有2个PivotItem)中有Pivot
,则他们共享Header
也可以滚动到ScrollViewer区域。
案例中的布局可以在XAML中描述,如:
<ScrollViewer>
<StackPanel>
<Grid x:Name="SharedHeader" Height="200">
<TextBlock Text="I am a header"/>
</Grid>
<Pivot>
<PivotItem>
<ListView MaxHeight="1000"/>
</PivotItem>
<PivotItem>
<ListView MaxHeight="1000"/>
</PivotItem>
</Pivot>
</StackPanel>
</ScrollViewer>
请注意,上面的ListView
支持IncrementalLoading
,因此我会限制他们的MaxHeight
,以防他们加载所有项目。
我想出了一个主意:
首先,我禁用了VerticalScrollMode ListView的内部ScrollViewer。我检测到Pivot到外部ScrollViewer的最远距离。当数据透视到外部ScrollViewer的顶部时,我启用ListView的内部ScrollViewer并禁用外部ScrollViewer。
Howerver,在我的解决方案中,因为滚动手势属于两个ScrollViewer,我必须在一个手势中丢失手指然后执行下一个手势,这会导致滚动时效果不佳。
有什么想法实现这种效果?