2012-04-29 1 views
2

Я успешно создал эффект прокрутки параллакса на фоне сгруппированным GridView, обернув его в ScrollViewer и прослушивая событие ScrollViewer.ViewChanged. Проблема в том, что это смешение с SemanticZoom.Реагирование на прокрутку в сгруппированном GridView с SemanticZoom в Win8 XAML

Sample (раздели) XAML, чтобы показать, что я сделал:

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

Это позволяет мне двигаться фоном, как прокрутка. Проблема заключается в том, что SemanticZoom ломается: когда вы уменьшаете масштаб и выбираете группу, вы всегда попадаете в первую группу. Удаление ScrollViewer let's SemanticZoom работает по назначению, но тогда я не могу получить положение прокрутки (потому что GridView не выставляет его).

В принципе, мне нужно представить сгруппированные плитки с помощью GridView + масштабировать семантически + перемещать фон с другой скоростью, чем прокрутка.

Есть ли способ получить положение прокрутки в GridView или сделать работу выше?

Обновление: Я использовал C# и XAML в Win8 Consumer Preview, но предпочитаю решение для предварительного просмотра Release.

+0

Я думаю, что я понимаю проблему, но образец кода, демонстрирующий это, может помочь всем. Можете ли вы сделать быстрый образец? – Krishna

+0

@ Кришна: Хорошая идея. Я обновил свой вопрос. –

ответ

0

SemanticZoom эффективно работает с помощью кросс-масштабирования и перекрестного затухания двух пользовательских элементов управления (ZoomedInView и ZoomedOutView). Я бы рекомендовал разместить два ScrollViewers, один внутри ZoomedInView и один в ZoomedOutView. Однако ScrollViewer не реализует интерфейс ISemanticZoomInfo, который необходим SemanticZoom.

Вы можете посмотреть подписку на событие ViewChanged и изменить что-то на ScrollViewer при уменьшении. Я думал об отключении IsHitTestVisible, но поскольку GridView - это ребенок, я думаю, что это просто отключит все. Вы можете попытаться отключить события жестов или ZoomChaining, но я не знаю, поможет ли это решить проблему, которую вы видите. Я согласен с другими, что фактический образец поможет.