4

由于我缺乏编程能力,我相信这对我来说只是一个问题。我目前正在探索页面导航与 Windows Phone 应用程序之间的转换。我最初使用故事板和完成的事件处理程序来让我的页面在屏幕上和屏幕外进行动画处理。当您想使用相同的转换从一个页面导航到多个页面时,这些会导致问题。

所以我开始研究 OnNavigatedTo 和 OnNavigatingFrom 事件,虽然它对 OnNavigatedTo 工作得很好,但后者就不起作用了。似乎 Microsoft.Phone.Navigation 程序集不包含 OnNavigatingFrom,并且引用 System.Windows.Navigation,编译正常,但我无法让页面在导航时关闭动画。

我的 Page2 上有一个按钮,我想返回到我的 MainPage(在我用消息框覆盖后退键进行测试之后)。我在页面上进行了转换,并将其作为事件处理程序代码...

private void btnP2_BackToP1Clicked(object sender, System.Windows.RoutedEventArgs e)
 {          
    NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));        
}

使用 OnNavigatedTo 和 OnNavigatingFrom 事件的代码...

protected override void OnNavigatedTo(PhoneNavigationEventArgs e)
{
    PageTransition_In.Begin();
}

// //

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
    PageTransition_Out.Begin();

    base.OnNavigatingFrom(e);
}

我感觉 Windows Phone 应用程序可能不支持 OnNavigatingFrom。OnNavigatedFrom 是 Microsoft.Phone.Navigation 的一部分,但它仅在页面不再处于活动状态时才执行操作,这为时已晚,无法执行任何动画效果。

4

3 回答 3

0

I believe that you need to add an event that captures the transition completion. Check out the demo that Microsoft provides for a list view application.

于 2010-03-21T17:08:10.340 回答
0

我很困惑为什么我们需要为 WinPhone7 推出我们自己的平滑过渡,但它确实存在。Jeff Brand ( SlickThought.net ) 似乎有迄今为止最好的解决方案。 这是一篇不错的文章,其中包含演练视频和示例代码,尽管他在文章中的示例代码是针对 4 月 CTP 的,并且似乎在 Beta 工具中被破坏了。

于 2010-07-30T19:05:11.300 回答
0

您采取的方法并不完全正确。相反,最好更改页面框架以了解如何在页面之间进行转换。您可以在Channel 9 视频Avi Pilosof 的博客上看到一个很好的例子。

例子:

<ControlTemplate x:Key="TransitioningFrame" TargetType="navigation:PhoneApplicationFrame">
  <Border>
    <toolkit:TransitioningContentControl
        Content="{TemplateBinding Content}" Transition="DownTransition" />
  </Border>
</ControlTemplate>
于 2010-07-22T12:41:10.273 回答