我有一个应用程序,在创建主窗口之前显示一个启动画面。如果用户在显示启动画面时关注了另一个应用程序,我想避免主窗口在创建时被盗。如何使用Window.ShowActivated = false与最大化窗口?
我的应用程序的启动是这样的:
private void Application_Startup(object sender, StartupEventArgs e)
{
SplashScreenService.Start();
// Initializing stuff...
...
// Ready to open the main window.
MainWindow mainWindow = MainWindow();
mainWindow.ShowActivated = SplashScreenService.HasFocus();
mainWindow.ShowDialog();
}
为了防止越来越激活主窗口,我设置Window.ShowActivated
到false
,只有当闪屏已失去焦点。但是这会导致一个异常:
InvalidOperationException:当ShowActivated为false并且WindowState设置为Maximized时,无法显示窗口。
事实上,我的主窗口设置WindowState
到Maximized
(从以前的会话设置恢复)。我不明白为什么ShowActivated
功能有这样的限制。我找不到有关此问题的任何文档。
我试图迫使WindowState
到Normal
时ShowActivated
是假的,它阻止了异常,但它也激活窗口!也许改变窗口状态实际上会导致激活?
有没有一个技巧可以用来解决这个问题?我想在最大化状态下恢复主窗口,并且如果用户在启动画面期间已将注意力从我的应用程序中撤离,则主窗口不会从其他应用程序中窃取焦点。
这是主最大化的窗口,而不是启动画面。 – ChrisF 2010-05-19 09:56:03
对不起,我的误解;)这种技术仍然可以为你工作,只是不要设置主窗口的窗口状态并手动最大化它。 – 2010-05-19 11:20:59