Ich habe zwei Windows
für eine Anwendung. Einer von ihnen ist MainWindow
und der andere ist für Einstellungen. SettingsWindow
wird geöffnet, wenn auf die Schaltfläche "Einstellungen" geklickt wird, indem Sie ShowDialog
verwenden und Owner
auf MainWindow
setzen.
Am SettingsWindow
habe ich einen Button ganz unten im Fenster und er ändert die Farbe in rot wenn IsMouseOver
ist True
und blau für False
. Es ändert sich jedoch nicht, wenn sich der Cursor über dem MainWindow befindet. Das Bild ist unten klar zu sein. Wie kann ich dieses Problem beheben?
CASE: Der Cursor befindet sich außerhalb von SettingsWindow, behält aber die rote Farbe, keine Änderung.
Xaml-Code:
%Vor%Nach einigen Nachforschungen konnte ich keinen logischen Grund dafür finden. Es scheint eher ein Fehler für mich zu sein. Also, wenn jemand genau weiß, warum das passiert, lass es uns wissen!
Wie auch immer, ich habe mir einen Workaround ausgedacht. Im Grunde können wir Show () verwenden und etwas Code hinzufügen, um näher an ein modales Verhalten heranzukommen - wie das Elternfenster zu deaktivieren, bis der Dialog geschlossen wird oder der Benutzer OK oder Abbrechen für die Instanz gewählt hat.
Beispiel:
%Vor%Nachdem wir das geschlossene window settingsWindow abonniert haben, können wir nun das übergeordnete Fenster wieder aktivieren, wenn settingsWindow geschlossen wird:
%Vor%Trigger funktionieren jetzt korrekt und das übergeordnete Fenster wird deaktiviert, bis das untergeordnete Fenster geschlossen wird.
Ich denke, Sie müssen die Mausposition manuell beobachten. Dafür könntest du den Code verwenden, der von Peheje hier gepostet wurde .
Ich habe dies benutzt, um ein funktionierendes Beispiel zu programmieren. Beim Verlassen des Fensters erhält der Button den richtigen Stil.
%Vor%xaml
%Vor%Dies funktioniert für mich: Definieren Sie eine Stilressource (für die Schaltfläche) unter Einstellungen Window.Resources - Dieser Stil legt dann die neue Vorlage (einen Rahmen), den Standardhintergrund als blau und den IsMouseOver-Auslöser fest, um ihn in rot zu ändern . Verweise den Stil entweder explizit auf implizit (beide funktionierten für mich).
Link zu einem kleinen Testprojekt: Ссылка
%Vor%Tags und Links wpf triggers ismouseover