0

我目前正在开发一个 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;
    }
}
4

1 回答 1

2

有一个全局标志,比如bool wasShown;在应用程序首次加载时将其设置为 true。然后,在您拥有的构造函数中,检查标志,如果弹出窗口已经显示,请不要再次显示。

在您的代码中,splash不是global。它仍然存在于 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 回答