首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有2个顶级窗口的WPF在1个窗口关闭时转到开始屏幕

问带有2个顶级窗口的WPF在1个窗口关闭时转到开始屏幕
EN

Stack Overflow用户
提问于 2018-02-19 23:25:42
回答 1查看 93关注 0票数 0

我们有一个应用程序,显示一个闪屏,其中显示一些数据,所以我们有一个自定义的闪屏。同样由于历史原因,所有的应用程序初始化都发生在UI线程上,所以我的解决方案是在一个单独的STA线程中显示闪屏。

代码语言:javascript
复制
private void ShowSplashScreen()
{
    var mainDispatcher = Dispatcher.CurrentDispatcher;

    var splashScreenThread = new Thread(() =>
    {
        new SplashScreen().Show();

        _splashScreenThreadDispatcher = Dispatcher.CurrentDispatcher;
        Dispatcher.Run();
    });
    splashScreenThread.SetApartmentState(ApartmentState.STA);
    splashScreenThread.Start();
}

private void CloseSplashScreen()
{
    _splashScreenThreadDispatcher.InvokeShutdown();
}

然后,当初始化完成时,它将运行

代码语言:javascript
复制
var mw = new MainWindow();
Application.Current.MainWindow = mw;

mw.Show();

CloseSplashScreen();

mw.Activate();

这工作正常的桌面模式=>主窗口显示,闪屏关闭,主窗口是可见的。然而,当我将窗口切换到平板电脑模式,并从开始屏幕启动应用程序时,当主窗口显示时,它只会闪烁,并再次转到后台,它会显示开始屏幕。如果我不关闭闪光灯,那么所有的东西仍然可见,但这当然不是一个选项。

我已经尝试了各种方法,调用me.Show()、mw.Activate()、me.Focus()的顺序不同,在启动画面的关闭处理程序中设置焦点,但似乎都不起作用。对如何解决这个问题有什么想法吗?在生产中,该应用程序只在平板电脑上使用,因此它是我们的必备功能。

致敬Stan

EN

回答 1

Stack Overflow用户

发布于 2018-02-21 19:01:42

我修复了它使用弹出式窗口,而不是一个窗口的闪屏。弹出窗口不需要所有者或家长,所以可以使用它,并且当弹出窗口关闭时,开始屏幕不会出现在主窗口的前面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48869255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档