Ich war in einer sehr ähnlichen Situation wie Sie. Die meisten der sucht Ich bin darauf gestoßen, dass ich nur den Besitzer des Fensters, das ich als oberstes Fenster haben möchte, auf das Hauptfenster oder das Fenster mit dem Namen "Anzeigen" setzen muss.
Wie auch immer, ich werde jetzt eine Lösung posten, die bei mir gut funktioniert hat.
Ich habe Ereignishandler für Window.Activated und Window.Deactived in dem Fenster erstellt, das in Bezug auf meine Anwendung das oberste sein sollte.
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;
}
Das funktioniert bei mir hervorragend. Hoffentlich ist das für jemand anderen da draußen nützlich :o)
0 Stimmen
Übrigens kann ich für dieses Fenster keinen Eigentümer festlegen, da dieses Fenster vor allen anderen Fenstern erstellt wird (es ist der Startbildschirm der Anwendung). Ref: stackoverflow.com/questions/2463149/
0 Stimmen
Auch wenn die Frage schon etwas älter ist, muss ich doch diese Anmerkung machen... Ihre Frage und der Kommentar sind ziemlich seltsam, Sie wollen Ihr Fenster oben in Ihrer Anwendung haben, aber in Ihrem Kommentar geben Sie an, dass keine Anwendung läuft, da es das erste Fenster (Startbildschirm) ist, also wie kann Ihr Fenster oben auf einer nicht vorhandenen Anwendung sein?!? Ich frage mich, wie um alles in der Welt diese Frage 16 positive Bewertungen erhalten konnte.
1 Stimmen
Wenn die App startet, gibt es kein anderes Fenster, sondern das Hauptfenster erscheint kurz danach und muss hinter dem Startbildschirm bleiben, bis alles geladen ist.
1 Stimmen
Warum dann nicht den Splashscreen als erstes Fenster starten lassen und wenn er fertig ist, das Hauptfenster öffnen? Ändern Sie einfach die StartupUri der Anwendung auf den Splashscreen. ( msdn.microsoft.com/de-us/library/ )