【问题标题】:OnNavigatedFrom in Window Phone 8.1Windows Phone 8.1 中的 OnNavigatedFrom
【发布时间】:2014-12-07 11:59:39
【问题描述】:

我正在从 Windows Phone 8 迁移到 Windows Phone 8.1。

我创建了一个 Windows Phone 8.1 应用商店应用程序 Hub 应用程序。

应用程序创建了 OnNavigatedTo 和 OnNavigatedFrom 方法

protected override void OnNavigatedTo( NavigationEventArgs e )
    {
    this.navigationHelper.OnNavigatedTo( e );
    }

protected override void OnNavigatedFrom( NavigationEventArgs e )
    {
    this.navigationHelper.OnNavigatedFrom( e );
    }

我在 OnNavigatedFrom 中放置了一个断点并尝试关闭应用程序,或者离开应用程序并且没有命中断点,即应用程序没有到达 OnNavigatedFrom。

Windows Phone 8 应用程序在 OnNavigatedFrom 上中断。 WP 8.1 的机制是否不同?如果有怎么办?

谢谢。

【问题讨论】:

    标签: c# windows-phone-8 windows-runtime windows-phone-8.1


    【解决方案1】:

    问题似乎出现了,因为您在 Debug 模式下运行(VS 附加)。在这种情况下,您的程序在 Navigation/Suspend 事件中的行为几乎没有什么不同,要正确测试它,您必须手动调用 Suspending 事件 (Lifecyce events dropdown)。在正常情况下,这两个事件(OnNavigatedFromSuspending)都会在您离开应用程序后立即调用。

    为了测试它,让我们在 OnNavigatedFrom 中添加一些东西(基于 Windows 应用商店模板中的 Hub App):

    protected async override void OnNavigatedFrom(NavigationEventArgs e)
    {
        Debug.WriteLine("OnNavigatedFrom");
        Hub.Background = new SolidColorBrush(Colors.Red);
        this.navigationHelper.OnNavigatedFrom(e);
    }
    

    在这种情况下,当您在未连接 Visual Studio 的情况下运行应用程序时,当您返回应用程序时,背景应该是红色的 - 这意味着事件已被触发。

    事实上,迁移到 WP8.1 WinRT 时还有一个巨大的 (IMO) 差异 - OnNavigatedTo won't be fired when you come back from suspension

    注意在 Windows Phone 上,应用程序暂停时会调用 OnNavigatedFrom()。应用恢复时不会调用 OnNavigatedTo()。

    它仅在您导航时调用。

    更多参考资料:Navigating between pagesLifecycleLaunching, resuming, and multitaskingGuidelines for app suspend and resume

    【讨论】:

    • 非常感谢。我将按照您提供的链接进行操作。 ?
    猜你喜欢
    • 2023-04-03
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多