Я столкнулся с ситуацией, очень похожей на вас. Большинство из поисков , с которыми я сталкивался, указывало, что все, что мне нужно было сделать, - это установить владельца окон, которые я хочу быть самым верхним, в главное окно или любое другое окно, которое называется Show.
В любом случае, я пойду и опубликую решение, которое хорошо сработало для меня.
Я создал обработчики событий для Window.Activation и Window.Deactived в окне, которое должно было быть самым верхним по отношению к моему приложению.
private void Window_Activated(object sender, EventArgs e)
{
Topmost = true;
}
private void Window_Deactived(object sender, EventArgs e)
{
if(Owner == null || Owner.IsActive)
return;
bool hasActiveWindow = false;
foreach(Window ownedWindow in Owner.OwnedWindows)
{
if(ownedWindow.IsActive)
hasActiveWindow = true;
}
if(!hasActiveWindow)
Topmost = false;
}
Это прекрасно работает для меня. Надеюсь, это полезно для кого-то еще там. : О)