Wie maximiere ich und bringe ein WPF-Hauptfenster an die Vorderseite meines Desktops? Ich habe einen Dateiwächter, der ein Verzeichnis überwacht. Wenn eine neue Datei in dem Verzeichnis erstellt wird, möchte ich das Hauptfenster meiner WPF-Anwendungen an die Front des Dekstops bringen. Wie Sie sehen können, habe ich mehrere Methoden auf der Hauptversion ausprobiert.Wie kann ich das WPF-Hauptfenster nach vorne bringen?
Modified Code: (ich die folgende Fehlermeldung erhalten: „Der aufrufende Thread dieses Objekt nicht zugreifen, da ein anderer Thread besitzt es“)
DispatcherOperation o = Dispatcher.CurrentDispatcher.BeginInvoke(new
Action(delegate
{
var win = System.Windows.Application.Current.MainWindow;
win.Activate();
win.WindowState = System.Windows.WindowState.Normal;
win.Topmost = true;
win.Focus();
}), System.Windows.Threading.DispatcherPriority.ContextIdle, null);
Debug.WriteLine("Invoke");
o.Wait();
Modified 2 (Versucht, den Dispatcher des Hauptfensters zu bekommen. ich bekomme immer noch "‚der rufende Thread dieses Objekt nicht zugreifen, da ein anderer Thread es besitzt‘.
System.Windows.Application.Current.MainWindow.Dispatcher.Invoke(() =>
{
var win = System.Windows.Application.Current.MainWindow;
win.Activate();
win.WindowState = System.Windows.WindowState.Normal;
win.Topmost = true;
win.Focus();
}, DispatcherPriority.Normal);
UPDATE (Working) ich glaube, ich nicht rief der Disponent gebunden th Das Hauptfenster mit den obigen Beispielen. Am Ende habe ich in der Fensterklasse eine Variable namens _mainWindow vom Typ MainWindow erstellt. Im MainWindow-Konstruktor habe ich die Variable instanziiert: _mainwidow = this;
Dann übergebe ich die _mainwindow Variable im Konstruktor der Klasse, in der ich den FileWatcher verwende. Hier kann ich den Dispatcher der _mainwindow Variable zugreifen:
_mainWindow.Dispatcher.Invoke(() =>
{
var win = System.Windows.Application.Current.MainWindow;
win.Activate();
win.WindowState = System.Windows.WindowState.Normal;
win.Topmost = true;
win.Focus();
}, DispatcherPriority.Normal);
Does [diese] (https://stackoverflow.com/a/4831839/23074) Antwort Hilfe? –
Funktioniert es, wenn Sie den "Dispatcher" des Hauptfensters anstelle des aktuellen verwenden? – Streamline
Streamline, ich habe versucht, den Dispatcher des Hauptfensters zu bekommen, indem ich meinen Code ändere. Siehe Modifiziert 2 oben. Ich bekomme immer noch "Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, weil ein anderer Thread es besitzt". –