我使用Prism的MefBootstrapper来初始化我的WPF应用程序,作为此过程的一部分,Shell窗口正在初始化。WPF应用程序登录窗口不在顶部
运行MefBootstrapper的Run()方法后,我显示一个连接到服务器的登录窗口,并且在成功连接的情况下,Shell(从主UI线程)被加载。
此登录窗口正在一个新的专用UI线程上运行,以免冻结此进程中的进度条(连接到服务器,特别是Shell加载)。
不幸的是,登录窗口没有显示在顶部,没有聚焦(即使当我使用:Activate(),TopMost = true,Focus())。
//UI mode - a new UI thread is initialized
var uiThread = new Thread(() =>
{
var loginWindow = new LoginWindow();
loginWindow.Show();
loginWindow.Activate();
loginWindow.Topmost = true;
loginWindow.Topmost = false;
loginWindow.Focus();
System.Windows.Threading.Dispatcher.Run();
});
uiThread.SetApartmentState(ApartmentState.STA);
uiThread.IsBackground = true;
uiThread.Start();
我该如何解决这个问题?
您可能在窗口已经初始化后设置TopMost标志。在你的问题中显示代码的相关部分。 – NVM
如果在显示窗口之前将TopMost设置为true,则窗口没有焦点。 –
那么你的问题不应该是:如何把焦点放在最上面的窗口?你只是混淆了这个问题。 – NVM