0

デバイスの戻るボタン イベントをキャンセルする必要があります。Control press "back button" and disable the application close the application using a dialog for confirm - wp7に投稿された解決策を試しましたが、うまくいきません。私は何か間違ったことをしていますか?ダイアログ ボックスで [OK] または [キャンセル] を選択しても、アプリケーションは常に終了します。

これが私のコードです...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;
using System.Windows.Media.Imaging;
using System.Windows.Resources;


namespace GodTools
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
            this.CordovaView.Loaded += CordovaView_Loaded;

            BackKeyPress += OnBackKeyPressed;

        }

        private void CordovaView_Loaded(object sender, RoutedEventArgs e)
        {
            this.CordovaView.Loaded -= CordovaView_Loaded;
            // first time load will have an animation
            Storyboard _storyBoard = new Storyboard();
            DoubleAnimation animation = new DoubleAnimation()
            {
                From = 0,
                Duration = TimeSpan.FromSeconds(0.6),
                To = 90
            };
            Storyboard.SetTarget(animation, SplashProjector);
            Storyboard.SetTargetProperty(animation, new PropertyPath("RotationY"));
            _storyBoard.Children.Add(animation);
            _storyBoard.Begin();
            _storyBoard.Completed += Splash_Completed;
        }

        void Splash_Completed(object sender, EventArgs e)
        {
            (sender as Storyboard).Completed -= Splash_Completed;
            LayoutRoot.Children.Remove(SplashImage);
        }

        void OnBackKeyPressed(object sender, System.ComponentModel.CancelEventArgs e)
        {
            var result = MessageBox.Show("Do you want to exit?", "Attention!",
                                          MessageBoxButton.OKCancel);

            if (result == MessageBoxResult.OK)
            {
                // Do not cancel navigation
                return;
            }
            e.Cancel = true;
        }
    }
}

また、Cordova 側の 「backbutton」イベントと同じ問題が発生しません。

4

1 に答える 1

1

参考までに: アプリケーション (XNA ゲームではない) を作成する場合は、[戻る] ボタンをキャンセルしないようにする必要があります。そうしないと、Marketplace の認証に合格した時点でアプリがキャンセルされます。

OnBackKeyPressまた、同じコードでメソッドをオーバーライドできます。

protected override void OnBackKeyPress(CancelEventArgs e)
        {
            var result = MessageBox.Show("Do you want to exit?", "Attention!",
                                          MessageBoxButton.OKCancel);

            if (result == MessageBoxResult.OK)
            {
                base.OnBackKeyPress(e);
                return;
            }
            e.Cancel = true;
        }

アップデート

新しい「Silverlight for Windows phone」ソリューションを作成しました。MainPage.xaml.cs ファイルを開き、次のコードを追加しました。

// Constructor
public MainPage()
{
    InitializeComponent();
    BackKeyPress += OnBackKeyPressed;
}

void OnBackKeyPressed(object sender, System.ComponentModel.CancelEventArgs e)
{
    var result = MessageBox.Show("Do you want to exit?", "Attention!",
                                  MessageBoxButton.OKCancel);

    if (result == MessageBoxResult.OK)
    {
        // Do not cancel navigation
        return;
    }
    e.Cancel = true;
}

したがって、このプロジェクトには 1 ページしかありません。そして、それは機能します。ターゲット プラットフォームは ですWindows Phone OS 7.1。Mango デバイスと標準エミュレータで確認しました。問題は別のところにあると思います。イベントをキャンセルしようとしているときに、一部のコードがアプリケーションをクラッシュさせる可能性がありますか?

新しいシンプルなプロジェクトで確認してみてください。

于 2012-08-06T18:02:42.710 に答える