UWP - 运行 每页导航一次代码
UWP - Run code once per page navigate
这是一个简单的问题,但我仍然无法Google解决。 C# UWP 应用中的什么事件 运行 每个页面导航仅一次。
我在之后添加了一个用于后退导航的事件处理程序:
this.InitializeComponent();
在页面构造函数中。
如果我在第一页和第二页来回两次,它会抛出错误,调试发现处理返回导航的事件被调用了两次,因为页面构造函数中的代码也 运行 两次.
那么在什么情况下我可以编写我只想 运行 每个页面导航一次的代码。或者是否有类似于 ASP.net 中的以下内容?
if (!Page.isPostback) {
//do something
}
您可以在页面上重写一个虚拟方法 class:OnNavigatedTo
当页面完成加载并成为父框架的源时,框架将调用该方法。
虽然我接受了另一个答案,但在我的具体情况下,以下代码更好,因为它检查是否设置了后退按钮处理程序。
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();
}
}
这是一个简单的问题,但我仍然无法Google解决。 C# UWP 应用中的什么事件 运行 每个页面导航仅一次。
我在之后添加了一个用于后退导航的事件处理程序:
this.InitializeComponent();
在页面构造函数中。
如果我在第一页和第二页来回两次,它会抛出错误,调试发现处理返回导航的事件被调用了两次,因为页面构造函数中的代码也 运行 两次.
那么在什么情况下我可以编写我只想 运行 每个页面导航一次的代码。或者是否有类似于 ASP.net 中的以下内容?
if (!Page.isPostback) {
//do something
}
您可以在页面上重写一个虚拟方法 class:OnNavigatedTo
当页面完成加载并成为父框架的源时,框架将调用该方法。
虽然我接受了另一个答案,但在我的具体情况下,以下代码更好,因为它检查是否设置了后退按钮处理程序。
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();
}
}