【问题标题】:Windows Phone - OnNavigatingFrom - problemWindows Phone - OnNavigatingFrom - 问题
【发布时间】:2023-03-09 21:53:01
【问题描述】:

我相信这对我来说只是一个问题,因为我缺乏编程能力。我目前正在探索页面导航与 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 的一部分,但它仅在页面不再处于活动状态时才执行操作,这为时已晚,无法执行任何动画效果。

【问题讨论】:

  • 我感受到了你的痛苦!我已经尝试过 Technium 建议的过渡框架,但它不起作用。这当然是最简单和(如果可行的话)最方便的选择,但它存在重大问题。我所做的是您的原始方法并设置页面级别属性来存储您要导航到的页面。因此,在调用 Navigate() 之前,您需要使用目标页面设置属性。然后,当转换完成后,导航到该数据。这不是很好,但它是我发现的唯一可行的选择

标签: silverlight windows-phone-7


【解决方案1】:

我认为您需要添加一个捕获转换完成的事件。查看 Microsoft 为列表视图应用程序提供的演示。

【讨论】:

  • 不幸的是,这不是问题所在。过渡根本不播放,页面只是改变,但是,当我导航到页面时,我可以看到动画。 OnNavigatingFrom 事件应该在页面变为非活动状态之前触发,并且一旦页面在 ApplicationFrame 中处于活动状态,OnNavigatedTo 事件就会触发。 OnNavigatingFrom 继承自 Silverlight Page 程序集,并且在 Microsoft.Phone 中不存在,这一事实可能表明它不受支持。即使该事件列在显示 msdn 上的 Microsoft.Phone.Navigation 事件的页面上。 bit.ly/brBzXD
  • 是的,SDK 中似乎存在一些错误。我在使用 SOAP SSL 身份验证时遇到了一些问题。
【解决方案2】:

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

例子:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2015-04-07
      • 2015-11-13
      • 2023-03-26
      相关资源
      最近更新 更多