2

我成功地在分组的背景上创建了视差滚动效果,方法GridView是将其包装在 a 中ScrollViewer并收听ScrollViewer.ViewChanged事件。问题是当它与SemanticZoom.

示例(剥离)XAML 以显示我所做的事情:

    <ScrollViewer>
        <SemanticZoom>
            <SemanticZoom.ZoomedInView>
                <GridView />
            </SemanticZoom.ZoomedInView>
            <SemanticZoom.ZoomedOutView>
                <GridView />
            </SemanticZoom.ZoomedOutView>
        </SemanticZoom>
    </ScrollViewer>

这允许我在用户滚动时移动背景。问题是SemanticZoom中断:当您缩小并选择一个组时,您总是被带到第一组。删除ScrollViewer让我们SemanticZoom按预期工作,但是我无法获得滚动位置(因为GridView没有暴露它)。

基本上,我需要使用 GridView 呈现分组图块 + 语义缩放 + 以与滚动不同的速度移动背景。

有没有办法在 GridView 中获取滚动位置,或者使上述工作?

更新:我在 Win8 Consumer Preview 中使用 C# 和 XAML,但更喜欢 Release Preview 的解决方案。

4

1 回答 1

0

SemanticZoom 通过交叉缩放和交叉淡化两个用户控件(ZoomedInView 和 ZoomedOutView)有效地工作。我建议放置两个 ScrollViewer,一个在 ZoomedInView 内,一个在 ZoomedOutView 内。但是,ScrollViewer 没有实现 SemanticZoom 需要的 ISemanticZoomInfo 接口。

当您缩小时,您可以查看订阅 ViewChanged 事件并更改 ScrollViewer 上的某些内容。我正在考虑关闭 IsHitTestVisible,但由于 GridView 是一个孩子,我认为这只会禁用一切。您可以尝试关闭手势事件或 ZoomChaining,但我不知道这是否能解决您看到的问题。我同意其他人的观点,即拥有实际样本会有所帮助。

于 2012-08-06T22:42:03.930 回答