У меня есть два WPF-приложения. Я через WCF передаю сообщение из первого приложения во второе открыть новое окно, причём, новое окно должно появиться поверх всех других окон (в том числе, и поверх окна первого приложения).
Если новое окно открыть с помощью метода Show(), то оно открывается позади текущего окна (окна первого приложения). Лучшим способом открытия нового окна я делаю так:
window.Topmost = true;
window.Show();
window.Topmost = false;
Окно появляется поверх первого окна и активируется. (Интересно, что winapi-функции SetForegroundWindow, BringWindowToTop, SwitchToThisWindow не помогают, уверенно помогло только
Topmost = true
.)
Остаётся только проблема, что первое окно по прежнему считает себя активированным и фокус остаётся на первом окне - клавиши работают на первом окне.
window.Focus();
не помогает. Щелчок мыши по новому окну фокус в него передаётся, и только тогда первое окно понимает, что потеряло фокус и деактивировалось.
Как передать фокус в новое окно?