【问题标题】:Override GoBack event in default button not working覆盖默认按钮中的 GoBack 事件不起作用
【发布时间】:2013-11-06 17:36:04
【问题描述】:

所有页面都有默认按钮:

页面导航的场景如下:

P1 -> P2 -> P3 -> P4

我在 P4 中做了一个覆盖,这样当点击默认按钮时,它将转到 P2。

问题:

在 P2 中,我点击 P2 中的默认 btn,它会回到 P3 而不是 P1

在 P4 protected override void GoBack(object sender, RoutedEventArgs e) { base.GoBack(发件人, e); this.Frame.Navigate(typeof(CustomerList2)); }

【问题讨论】:

  • 尝试删除base.GoBack(sender, e);
  • 它不起作用。是否有用于清除导航堆栈的 Api?
  • 做一件事,声明并定义所有新的后退按钮点击事件,而不是使用基类'GoBack事件。
  • 让它工作。我在需要指定去哪里的每个页面中都覆盖了 GoBack 事件。 this.Frame.Navigate(typeof(WhereIWantTogo));我想知道当我在 MainPage 中时是否有清除导航堆栈?
  • WinRT 没有任何设置来清理导航堆栈,但您可以尝试将导航状态设置为 string.EmptyFrame.SetNavigationState(string.Empty);

标签: windows-8 windows-runtime microsoft-metro windows-store-apps winrt-xaml


【解决方案1】:

我假设(可能是错误的)你想回到 P2... 如果是这样..

简单循环...

        while (Frame.CurrentSourcePageType != typeof(P2))
        {
            Frame.GoBack();
        }

【讨论】:

  • 这将与我的覆盖方法相同,不需要知道我访问了哪个页面。我正在寻找导航堆栈中的任何新功能,一旦我到达 MainPage,就会提供清晰的导航堆栈。
  • 为什么要在到达 MainPage 时清除导航堆栈?除非我遗漏了什么,否则使用 GoBack() 会清除它。
  • 首先,我从 P1->P2->P3->P4 开始,我确实在 P4 中覆盖到 Goto P2。如果我不在 P2 中覆盖,我将转到 P3。所以,如果我能回到 MainPage,我会清除 Navigation Stack 中的所有内容以重新开始。
  • 对不起,迈克 - 我很难理解你想要做什么。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多