我有一个应用程序,在创建主窗口之前显示了启动画面。如果用户在显示初始屏幕时关注了另一个应用程序,我想避免主窗口在创建时窃取焦点。
我的应用程序的启动如下所示:
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 时,无法显示 Window。
事实上,我的 MainWindow 设置WindowState
为Maximized
(从以前的会话设置恢复)。我不明白为什么该ShowActivated
功能有这样的限制。我找不到有关此问题的任何文档。
我尝试强制WindowState
何时为假Normal
,ShowActivated
它可以防止异常,但它也会激活窗口!也许改变窗口状态实际上会导致激活?
有什么技巧可以用来解决这个问题吗?我想将我的主窗口恢复为最大化状态,并且如果用户在启动屏幕期间将注意力从我的应用程序上移开,则主窗口不会将焦点从其他应用程序上窃取。