我成功地在分组GridView
的背景上创建了视差滚动效果,方法是将其包裹在ScrollViewer
中并聆听ScrollViewer.ViewChanged
事件。问题是当它与SemanticZoom
混合时。
示例(剥离)XAML以显示我已完成的工作:
<ScrollViewer>
<SemanticZoom>
<SemanticZoom.ZoomedInView>
<GridView />
</SemanticZoom.ZoomedInView>
<SemanticZoom.ZoomedOutView>
<GridView />
</SemanticZoom.ZoomedOutView>
</SemanticZoom>
</ScrollViewer>
这允许我在用户滚动时移动背景。问题是SemanticZoom
中断:当你缩小并选择一个组时,你总是被带到第一组。删除ScrollViewer
让SemanticZoom
按预期工作,但我无法获得滚动位置(因为GridView
没有公开它)。
基本上,我需要使用GridView + zoom语义显示分组切片+以不同于滚动的速度移动背景。
有没有办法在GridView中获取滚动位置,或者使上述工作成功?
更新:我在Win8 Consumer Preview中使用了C#和XAML,但更喜欢Release Release的解决方案。
答案 0 :(得分:0)
SemanticZoom通过交叉缩放和交叉淡化两个用户控件(ZoomedInView和ZoomedOutView)有效地工作。我建议放两个ScrollViewers,一个放在ZoomedInView里面,一个放在ZoomedOutView里面。但是,ScrollViewer不实现SemanticZoom需要的ISemanticZoomInfo接口。
您可以查看订阅ViewChanged事件并在缩小时更改ScrollViewer上的内容。我正在考虑关闭IsHitTestVisible,但由于GridView是一个孩子,我认为这只会禁用所有内容。您可以尝试关闭手势事件或ZoomChaining,但我不知道这是否能解决您所看到的问题。我同意其他人的观点,即拥有实际样本会有所帮助。