2012-05-28 69 views
0

我想創建一個動畫,從而當用戶滾動「FrontScroll」時,應用程序會自動將同樣大小的「BackgroundScroll」滾動到相同的偏移量相同的速率。在前後滾動之間分層是我想保持靜態的圖像。中間圖像只填充1/4的屏幕,其餘圖像在png中是透明的。我試圖創建其他圖像在用戶滾動時逐漸出現在靜態圖像上方和後面的效果。WP7 ScrollViewer以編程方式滾動背景ScrollViewer與前面的ScrollViewer同步

目前我在ManipulationCompleted上有一個活動,但它會產生一個非常「緊張」的效果,因爲背景滾動不會滾動到位置,直到用戶從屏幕上擡起手指爲止。我想讓動畫即時顯示,不管操作是否已完成,從而使2個滾動查看器保持完美同步。此外,當用戶「滑動」ScrollViewer以移動更遠的距離時,ManipulationCompleted事件不會觸發,因此2個滾動查看器不會同步。我也嘗試了MouseWheel,MouseLeave,MouseMove事件,但沒有得到我期待的效果。

有誰知道我想要做什麼可能與Windows Phone 7.5中的當前API的,如果有的話,我怎麼能做到這一點的任何指針將不勝感激?

我目前的XAML和CodeBehind事件如下。

 <ScrollViewer HorizontalAlignment="Center" Margin="0,0,0,0" Name="backgroundScroll" VerticalAlignment="Top" Background="Transparent" MaxHeight="Infinity"> 
       <Image HorizontalAlignment="Center" Height="2000" Stretch="Fill" Source="[email protected]" /> 
     </ScrollViewer> 

     <Image Source="[email protected]" HorizontalAlignment="Center" Name="MiddleStatic" Stretch="Fill" VerticalAlignment="Top" Margin="-1,-1,0,0" /> 

     <ScrollViewer HorizontalAlignment="Center" Name="FrontScroll" VerticalAlignment="Top" MaxHeight="Infinity" MinHeight="0" ManipulationCompleted="FrontScroll_ManipulationCompleted"> 
      <StackPanel Background="#00000000"> 
       <Image Height="2000" Source="[email protected]" HorizontalAlignment="Center" Name="FrontScroll" Stretch="Fill" /> 
      </StackPanel> 
     </ScrollViewer> 
    </Grid> 


    private void FrontScroll_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e) 
    { 
     backgroundScroll.ScrollToVerticalOffset(((ScrollViewer)sender).VerticalOffset); 
    } 
+0

你可以在視頻/應用程序中顯示這種行爲的例子嗎?我不明白你在找什麼。 –

回答

0

不幸的是,因爲沒有Scroll事件爲WP7 ScrollViewer,我不知道是否有一個「平穩」的方式來保持兩個ScrollViewers同步。

有一種方法可以保持ScrollViewer同步,但是 - 創建一個DispatcherTimer,並將Interval屬性設置爲一個小的TimeSpan;例如0.2秒。在Tick事件處理程序中,將第二個滾動查看器的VerticalOffset設置爲第一個滾動查看器的垂直偏移量(就像您在ManipulationCompleted事件中所做的那樣)。

它仍然不會流暢,但定時器啓動應保持滾動同步。

+0

感謝Codechinchilla,正如你所說的那樣,它不夠流暢,但現在應該足夠了。再次感謝。 – BMac

+0

不客氣 - 你的項目祝你好運! – codechinchilla