пример - press keyboard c#




Windows Phone Back KeyPress+MessageBox отключает приложение без выбора (2)

http://msdn.microsoft.com/en-US/library/windowsphone/develop/jj206947(v=vs.105).aspx

В Windows Phone 8, если вы вызовете Show в OnBackKeyPress (CancelEventArgs) или обработчике события BackKeyPress, приложение завершит работу.

Вы можете обойти это, вызывая Show в другом потоке, как описано в следующих шагах. Переопределите BackKeyPress или создайте обработчик для события BackKeyPress. Установите Отмена на «Истина», чтобы отменить действие нажатия клавиши «Назад». Отправляйте метод, который показывает MessageBox. Если пользователь хочет покинуть приложение, вызовите Terminate (), иначе ничего не сделайте.

У меня есть странная проблема, переопределяющая функцию BackkeyPress в коде позади, внутри функции у меня есть простое окно сообщений, чтобы вернуться или отменить навигацию (оставаться на текущей странице), когда выбор не сделан (ok или cancel), и Messagebox открыт долго время, сбой приложения, когда я пытаюсь отлаживать, никакое исключение не выбрасывается, и приложение остается в состоянии, если не нажато ОК или отмена, но при нормальном запуске (без отладчика) крах становится очевидным.

    protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
    {

        string caption = "exit?";
        string message = "Do you still want to exit?";
        e.Cancel = MessageBoxResult.Cancel == MessageBox.Show(message, caption,           
        MessageBoxButton.OKCancel);

        base.OnBackKeyPress(e);

    }

Я нашел еще одно решение, поэтому я подумал, что было бы хорошо, если бы я разместил его здесь. Однако это обходное решение.

private async void PhoneApplicationPage_BackKeyPress (object sender, System.ComponentModel.CancelEventArgs e)
{
     e.Cancel = true;
     await Task.Delay(100);
     if (MessageBox.Show(msg, cap, MessageBoxButton.OKCancel) == MssageBoxResult.OK)
     {
          //somecode
     }                
}

Источник