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

时间:2018-03-23 20:00:40

标签: c# uwp navigation initialization back-button

这是一个简单的问题,但我仍然无法通过Google获得解决方案。 C#UWP应用中的哪个事件每页导航仅运行一次。

我在后面添加了一个用于后退导航的事件处理程序:

this.InitializeComponent();
页面构造函数中的

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

所以在哪个事件中我可以编写代码,我只希望每页导航只运行一次。或者ASP.net中是否有类似的内容?

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

    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();
        }
    }