2012-05-11 42 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

编辑答案。 –