2012-05-28 68 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