UWP - 每页导航运行一次代码


这是一个

简单的问题,但我仍然无法谷歌寻找解决方案。C# UWP 应用中的哪个事件在每个页面导航中仅运行一次。

我为后退导航添加了一个事件处理程序:

this.InitializeComponent();

在页面构造函数中。

如果我在第一页和第二页来回两次,它会抛出错误,调试发现处理后退导航的事件被调用了两次,因为页面构造函数中的代码也运行了两次。

那么在哪种情况下,我可以编写我只想在每个页面导航中运行一次的代码。还是有类似于 ASP.net 以下内容的内容?

if (!Page.isPostback) {
   //do something
}

您可以在页面类上覆盖一个虚拟方法:OnNavigatedTo当页面完成加载并成为父框架的源时,框架将调用该方法。

https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.page.onnavigatedto#Windows_UI_Xaml_Controls_Page_OnNavigatedTo_Windows_UI_Xaml_Navigation_NavigationEventArgs_

虽然我接受了另一个答案,但在我的特定情况下,以下代码更好,因为它检查是否设置了后退按钮处理程序。

    private void App_BackRequested(object sender, BackRequestedEventArgs e)
    {
        Frame rootFrame = Window.Current.Content as Frame;
        if (rootFrame == null)
            return;
        // If we can go back and the event has not already been handled, do so.
        if (rootFrame.CanGoBack && e.Handled == false)
        {
            e.Handled = true;
            rootFrame.GoBack();
        }
    }

相关内容

  • 没有找到相关文章

最新更新