在Windows Phone 8中控制后退按键

时间:2013-12-09 11:46:17

标签: c# windows-phone-8

在我按下后退键的应用程序中,我收到消息框正常按预期显示消息框并且在后台应用程序正在运行,然后按ok / cancel app正常运行。

一旦有消息框,然后我再按一下键,消息框就会消失,如果我再按一下按键,它会再次返回,除非我选择确定/取消。

我无法执行上述功能,按下第二次返回按钮,消息框不会消失。

以下是代码:

protected override void OnBackKeyPress(CancelEventArgs e)

{

    CustomMessageBox messageBox = new CustomMessageBox()
    {
         Caption = "Would you like to terminate the transfer?",
         //Message = "",
         LeftButtonContent = "Ok",
         RightButtonContent = "Cancel"
    };
    messageBox.show();

messageBox.Dismissed += (s1, e1) =>

{

switch (e1.Result)

{

            case CustomMessageBoxResult.LeftButton:
                //exiting the current transfer happening
                break;
            case CustomMessageBoxResult.RightButton:
                // do nothing here
                break;
            default:
                break;
        }
    };
messageBox.show();

}

现在问题是每次返回键如下:

当前O / P:反复按下后退键,弹出消息框。

所需的O / P:如果我按回一次键,则会弹出消息框,如果我再次按下它应该会在不打扰后台传输的情况下关闭,除非您选择一个选项,否则应该一次又一次地按回来键来自留言箱。

请帮助我控制消息框显示。

1 个答案:

答案 0 :(得分:5)

以下是一个例子:

    protected override void OnBackKeyPress(CancelEventArgs e)
    {
        e.Cancel = true;

        MessageBox.Show("C#");
    }

基本实施:

bool OnOff = true;

        protected override void OnBackKeyPress(CancelEventArgs e)
        {
            base.OnBackKeyPress(e);

            e.Cancel = true;

            Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                if (this.OnOff)
                {
                    CustomMessageBox message = new CustomMessageBox
                    {
                        Caption = "Would you like to terminate the transfer?",
                        LeftButtonContent = "Ok",
                        RightButtonContent = "Cancel"
                    };

                    message.Dismissed += (sender, args) =>
                    {
                        ((CustomMessageBox)sender).Dismissing += (o, eventArgs) => eventArgs.Cancel = true;

                        if (args.Result == CustomMessageBoxResult.LeftButton)
                        {
                            // Code
                        }
                        else if (args.Result == CustomMessageBoxResult.RightButton)
                        {
                            // Code
                        }
                    };

                    message.Show();

                    this.OnOff = false;
                }
                else
                    this.OnOff = true;

            });
        }

您可以在此处找到更多信息:Using the CustomMessageBox in OnBackKeyPressed