2012-04-29 4 views
2

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

サンプル私が何をやったか表示する(剥奪)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を使用していましたが、リリースプレビューのソリューションを好んでいました。

+0

私はこの問題を理解していると思っていますが、それを示すコードサンプルは誰にでも役立つかもしれません。簡単なサンプルを作っていただけますか? – Krishna

+0

@Krishna:いい考えです。私は私の質問を更新しました。 –

答えて

0

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

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

関連する問題