Я использую MefBootstrapper Prism для инициализации моего приложения WPF, так как часть этого процесса инициализируется в окне оболочки.Окно входа в приложение WPF не сверху
После выполнения метода Run() MefBootstrapper, я показываю окно входа в систему, которое подключается к серверу, и в случае успешного соединения оболочка загружается (из основного потока пользовательского интерфейса).
Это окно входа в систему работает по новому выделенному потоку пользовательского интерфейса, чтобы не затормозить индикатор выполнения в этом процессе (подключение к серверу и особенно загрузка Shell).
К сожалению, окно входа в систему не отображается сверху и не фокусируется (даже если я использую: Активировать(), 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