2012-05-11 143 views
0

我目前正在開發Windows Phone應用程序,並且使用彈出窗口包含動畫啓動畫面。Windows Phone啓動畫面彈出窗口

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

     InitializeComponent(); 
    } 

所有這一切工作正常,但問題是,當應用程序被導航到另一個屏幕,開機畫面將再次顯示,由於屏幕採用的的MainPage實例。有沒有一種方法可以只顯示一次閃屏?

我嘗試使用全局變量來檢查它是否設置爲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

編輯答案。 –