2010-03-21 67 views
4

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

所以我已经开始看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); 
} 

我有感觉OnNavigatingFrom可能不支持Windows Phone应用程序。 OnNavigatedFrom是Microsoft.Phone.Navigation的一部分,但只有当页面不再处于活动状态时才执行操作,这对于执行任何动画效果来说已经太迟了。

+0

我感到你的痛苦!我尝试了Technium建议的转换框架,但它不起作用。这当然是最简单的(如果它工作的话)最方便的选择,但它有重大问题。我所做的是您的原始方法,并设置页面级属性来存储要导航到的页面。所以在调用Navigate()之前,你需要设置目标页面的属性。然后,当转换完成时,导航到该数据。这不是很好,但它是我发现的唯一替代方法 – Mac 2011-03-14 22:47:56

回答

0

我相信你需要添加一个捕获过渡完成的事件。查看Microsoft为列表视图应用程序提供的演示。

+0

不幸的是,这不是问题。转换根本不起作用,页面只是改变,但是,当我导航到页面时,我可以看到动画。 OnNavigatingFrom事件应该在页面变为非活动状态之前触发,并且一旦页面在ApplicationFrame中处于活动状态,就会触发OnNavigatedTo事件。 OnNavigatingFrom继承自Silverlight Page装配,并且不存在于Microsoft.Phone中,这一事实可能表明它不受支持。即使该事件在msdn上显示Microsoft.Phone.Navigation事件的页面上列出。 http://bit.ly/brBzXD – 2010-03-21 19:28:03

+0

是的,它看起来像SDK中的一些错误。我在使用SOAP SSL身份验证时遇到了一些问题。 – 2010-03-21 23:05:20

0

您采取的方法不完全正确。相反,最好更改页面框架以了解如何在页面之间进行转换。你可以在a Channel 9 vidAvi Pilosof's blog上看到一个很好的例子。

例子:

<ControlTemplate x:Key="TransitioningFrame" TargetType="navigation:PhoneApplicationFrame"> 
    <Border> 
    <toolkit:TransitioningContentControl 
     Content="{TemplateBinding Content}" Transition="DownTransition" /> 
    </Border> 
</ControlTemplate> 
0

我困惑,为什么我们要推出我们自己的平稳过渡为WinPhone7,但它是。 Jeff Brand(SlickThought.net)目前似乎拥有最佳解决方案。 Here is a nice article带有演练视频和示例代码,尽管他的文章中的示例代码是针对4月份的CTP,并且似乎在Beta工具中被打破。