【问题标题】:Windows Phone Splash Screen PopupWindows Phone 启动画面弹出窗口
【发布时间】:2012-05-12 07:58:50
【问题描述】:

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

【问题讨论】:

  • 你需要弹出窗口吗?如果它只是一张图片,那么 WP7 有一种方法可以在应用程序加载期间显示出来。只需将图像命名为 splashscreen.jpeg。
  • 我不得不做一个弹出窗口,因为我需要显示一些动画

标签: c# windows-phone-7 splash-screen


【解决方案1】:

有一个全局标志,例如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();
    }
}

【讨论】:

  • 正如我在上一部分中解释的那样,我尝试使用全局变量,但它不断被初始化回原始状态。你能解释一下我可以在哪里初始化这个标志而不是回到原来的值吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
相关资源
最近更新 更多