2

GridViewでラップしてイベントScrollViewerをリッスンすることにより、グループ化された の背景に視差スクロール効果を正常に作成しました。ScrollViewer.ViewChanged問題は、これがSemanticZoom.

私が何をしたかを示すサンプル (ストリップ) XAML:

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

これにより、ユーザーがスクロールするときに背景を移動できます。問題はSemanticZoom壊れていることです: ズームアウトしてグループを選択すると、常に最初のグループに移動します。削除すると意図ScrollViewerSemanticZoomたとおりに動作しますが、スクロール位置を取得できません (GridView公開されないため)。

基本的に、グループ化されたタイルを GridView + 意味的にズーム + スクロールとは異なる速度で背景を移動して表示する必要があります。

GridView でスクロール位置を取得する方法、または上記を機能させる方法はありますか?

更新: Win8 Consumer Preview で C# と XAML を使用していましたが、Release Preview のソリューションを好みます。

4

1 に答える 1

0

SemanticZoom は、2 つのユーザー コントロール (ZoomedInView と ZoomedOutView) をクロス ズームおよびクロス フェードすることで効果的に機能します。1 つは ZoomedInView 内に、もう 1 つは ZoomedOutView 内に、2 つの ScrollViewer を配置することをお勧めします。ただし、ScrollViewer は、SemanticZoom が必要とする ISemanticZoomInfo インターフェイスを実装していません。

ViewChanged イベントをサブスクライブし、ズームアウトしたときに ScrollViewer で何かを変更することを検討できます。IsHitTestVisible をオフにすることを考えていましたが、GridView は子であるため、すべてが無効になると思います。ジェスチャー イベントまたは ZoomChaining をオフにすることもできますが、それで問題が解決するかどうかはわかりません。私は、実際のサンプルが役立つという他の人たちの意見に同意します.

于 2012-08-06T22:42:03.930 に答える