0

現在、Windows Phoneアプリケーションを開発しており、ポップアップを使用してアニメーション化されたスプラッシュ画面を含めました。

public MainPage()
    {
        splashPopup = new Popup() { IsOpen = true, Child = new SplashScreenControl() };
        bgWorker = new BackgroundWorker();
        BgWorker();

        InitializeComponent();
    }

これはすべて正常に機能しますが、問題は、アプリが別の画面に移動すると、画面がMainPageのインスタンスを使用するため、スプラッシュ画面が再び表示されることです。スプラッシュ画面を1回だけ表示する方法はありますか?

グローバル変数を使用してtrueに設定されているかどうかを確認しようとしましたが、falseに初期化されたままであるため失敗しました。他にどのような方法がありますか?

これは私がやろうとしたがうまくいかなかったものです:

public class MainPage
{
    bool splash = false;

    public MainPage()
    {
        if (splash == false)
        {    
            splashPopup = new Popup() { IsOpen = true, Child = new SplashScreenControl() };
            bgWorker = new BackgroundWorker();
            BgWorker();
        }
        InitializeComponent();

        splash = true;
    }
}
4

1 に答える 1

2

のようなグローバルフラグbool wasShown;を設定し、アプリケーションが最初にロードされるたびにtrueに設定します。次に、使用しているコンストラクターでフラグを確認し、ポップアップが既に表示されている場合は、再度表示しないようにします。

あなたのコードでsplashは、はグローバルではありません。MainPageのコンテキストでは引き続き存在します。静的クラスで宣言するAppか、追加の静的クラスを使用します。その後にすべきことは次のとおりです。

public class MainPage
{
    public MainPage()
    {
        if (!App.Splash)
        {    
            splashPopup = new Popup() { IsOpen = true, Child = new SplashScreenControl() };
            bgWorker = new BackgroundWorker();
            BgWorker();
            App.Splash = true;
        }
        InitializeComponent();
    }
}
于 2012-05-11T23:27:21.983 に答える