2012-05-11 21 views
0

現在、Windows Phoneアプリケーションを開発中です。ポップアップを使用してアニメーションスプラッシュスクリーンを使用しました。Windows Phoneスプラッシュスクリーンポップアップ

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

     InitializeComponent(); 
    } 

このすべてが正常に動作しますが、問題は、アプリケーションが別の画面に移動したとき、画面がメインページのインスタンスを使用しているため、スプラッシュ画面が、再び表示されることです。スプラッシュ画面を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; 
    } 
} 
+0

ポップアップが必要ですか?それが単なる画像の場合、WP7はアプリの読み込み中にそれを表示する方法を持っています。画像にsplashscreen.jpegという名前を付けるだけです。 –

+0

アニメーションを表示する必要があったため、ポップアップを行う必要がありました。 – Keleb

答えて

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(); 
    } 
} 
+0

最後の部分で説明したように、グローバルを使用しようとしましたが、初期状態に戻って元の状態に戻ってきました。このフラグを初期化して元の値に戻すことができない場所を説明してください。 – Keleb

+0

私は明確化のために質問を編集しました。 – Keleb

+0

答えを編集しました。 –

関連する問題