title: How to handle OnBackKeyPress correctly?
body: <p>To make it simple, I create a new app, which contains MainPage, and Page2.
  MainPage has a button, which navigates to Page2. Also override MainPage.OnBackKeyPress:</p>
  
  <pre><code>    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
      {
          if (MessageBox.Show("Quit?", "Confirm", MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
              e.Cancel = true;
          else
              base.OnBackKeyPress(e);
      }
  </code></pre>
  
  <p>Page2 is empty, except override OnNavigateFrom, to simulate a long time operation when back from Page2 to MainPage:</p>
  
  <pre><code>    protected override void OnNavigatedFrom(NavigationEventArgs e)
      {
          System.Threading.Thread.Sleep(1000);
          base.OnNavigatedFrom(e);
      }
  </code></pre>
  
  <p>Everything is ok, but when I am at Page2, and press Back key 3-4 times <em>very quickly</em>, then I see the message box popup twice.
  I expect the message box not shown, or at least show and hide. Is there anything wrong in my code? Thanks.</p>