none
当设置NavigateCacheMode=“Required”时,页面导航GoBack出现问题 RRS feed

  • 问题

  • 我现在遇到以下情况:我有3个页面,MainPage,Page1,Page2,我先从MainPage跳转至Page1,然后从Page1跳转到Page2,我在Page2中重写Windows::Phone::UI::Input::HardwareButtons::BackPressed 事件,当Page1不设置NavigateCacheMode=“Required”时,页面正常回退到Page1页面,反之设置了,就直接回退到MainPage页面,而不是回退至Page1页面,请问这是什么问题呢?

    void HardwareButtons_BackPressed(Platform::Object^ sender, Windows::Phone::UI::Input::BackPressedEventArgs^ e)
    {
    Windows::UI::Xaml::Controls::Frame^ _frame = dynamic_cast<Windows::UI::Xaml::Controls::Frame^>(Windows::UI::Xaml::Window::Current->Content);
    if (_frame == nullptr)
    {
    return;
    }
    this->Frame->GoBack();
    e->Handled = true;
    }

    2014年11月24日 7:01

答案

  • this->Frame->GoBack();
    e->Handled = true;

    改成

    e->Handled = true;

    this->Frame->GoBack();

    一旦先 GoBack 就不會處理到 e->Handle , 然後因為設定 NavigateCacheMode=“Required” 的 page 物件還在記憶體, 所以Frame 又會再度 GoBack 一次


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年11月25日 14:25

全部回复

  • 您好,您有試過追蹤看看你的navigate backstack的情況嗎?

    可以參考下面文章,您試著觀察您的navigate backstack的內容:

    http://msdn.microsoft.com/en-us/library/windows/apps/hh394012%28v=vs.105%29.aspx

    2014年11月25日 3:49
  • this->Frame->GoBack();
    e->Handled = true;

    改成

    e->Handled = true;

    this->Frame->GoBack();

    一旦先 GoBack 就不會處理到 e->Handle , 然後因為設定 NavigateCacheMode=“Required” 的 page 物件還在記憶體, 所以Frame 又會再度 GoBack 一次


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2014年11月25日 14:25