电话应用页面导航问题

发布于 2024-11-01 21:24:26 字数 179 浏览 1 评论 0原文

我正在开发一个 Windows Phone 应用程序。

我有三个页面,P1、P2 和 P3。

从P1我可以去P2,从P2我可以去P3。

我只想在从 P3 返回到 P2 时执行一些代码。

我怎样才能做到这一点?

如果我只想在从 P1 到 P2 时执行另一个代码...

I'm developing a Windows Phone app.

I have three pages, P1, P2 and P3.

From P1 I can go to P2, and from P2 I can go to P3.

I want to execute some code only when I go back from P3 to P2.

How can I do that?

And if I want to execute another code only when I go from P1 to P2...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌路终见情 2024-11-08 21:24:26

重写 PhoneApplicationPage 类的 OnNavieratedFrom 方法,并将当前页面存储在全局静态变量中。

也覆盖 OnNavigedTo ,您可以在其中检查变量并根据其值执行代码。当您的应用程序被逻辑删除时,不要忘记保留该变量,您可以将其保留在 PhoneApplicatiopnPage.State 字典中

Override the OnNavigatedFrom method of class PhoneApplicationPage and store the current page in a global static variable.

Override OnNavigatedTo as well, in there you check the variable and execute your code depending on it's value. Dont forget to persist the variable when your application gets tombstoned, you can persist it in the PhoneApplicatiopnPage.State dictionary

盛夏尉蓝 2024-11-08 21:24:26

您尝试的操作与经典有限状态自动机的操作方式相匹配。您只需要一个在页面生命周期之外持续存在的变量即可实现此目的。

在 App.xaml.cs 中创建一个新的公共字符串属性。

public string PreviousPage { get; set; }

在页面的 Page_Load 方法中,您可以检查上一页并对其进行操作。

Page_Load(object sender, RoutedEventArgs e)
{
     switch(App.PreviousPage)
     {
       case "P1":
         //do something
         break;
       case "P2":
         //do something different
         break;
       case "P3":
         //do something fantastic
         break;
       default:
         //I have no idea how we got here. 
         break;
    }
    //After we have done out work let's update PreviousPage
    App.PreviousPage="P1";//or what ever the page name is. 
}

What you are trying to to matches how classical finite state automata's do. You only need a variable that will persist beyond your page's life time to accomplish this.

Within App.xaml.cs create a new public string property.

public string PreviousPage { get; set; }

Within your pages Page_Load method you can check the previous page and act on it.

Page_Load(object sender, RoutedEventArgs e)
{
     switch(App.PreviousPage)
     {
       case "P1":
         //do something
         break;
       case "P2":
         //do something different
         break;
       case "P3":
         //do something fantastic
         break;
       default:
         //I have no idea how we got here. 
         break;
    }
    //After we have done out work let's update PreviousPage
    App.PreviousPage="P1";//or what ever the page name is. 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文