Gemäß der MSDN Dokumentation für die WindowStartupLocation Property:Wie kann ich ein WPF-Fenster mit dem Mauszeiger auf dem Bildschirm maximieren?
Mittenschirm Einstellung bewirkt, dass ein Fenster in der Mitte des Bildschirms positioniert werden, dass das Maus-Cursor enthält.
Obwohl die MSDN doc für die CenterScreen Field selbst definiert sie etwas weniger klar als:
Der Start Position eines Fensters der Mitte des Bildschirms, auf dem sie geöffnet wird.
Ein einfacher Test zeigt dies funktioniert, wie es sollte:
MainWindow.xaml
<Window x:Class="CenterScreenTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button Click="button_Click">Open Window</Button>
</Window>
MainWindow.xaml.cs
using System.Windows;
namespace CenterScreenTest
{
public partial class MainWindow
{
public MainWindow()
{
InitializeComponent();
}
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.Show();
}
}
}
Wenn Sie diese auf einem Dual testen Monitor-System, können Sie sehen, dass das neue Fenster auf dem Bildschirm zentriert wird, wo der Mauszeiger ist, wenn Sie auf die Schaltfläche klicken. Genau so sollte es funktionieren: sollte funktionieren.
Jedoch, wenn Sie versuchen, das Fenster zu maximieren, bevor Sie es zeigen, maximiert das neue Fenster nur auf dem Bildschirm, von dem Sie die Anwendung gestartet. Ändern Sie den Button_Click Ereignishandler Folgenden zu sehen, was ich meine:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.WindowState = WindowState.Maximized;
window.Show();
}
Jetzt wird das Fenster nur auf dem Bildschirm maximieren, aus dem die Anwendung gestartet wird, unabhängig davon, wo sich der Mauszeiger befindet, wenn Sie auf die Schaltfläche klicken . Wenn Sie den Fensterstatus auf maximiert nach zeigen Sie es, CenterScreen funktioniert ordnungsgemäß. Dies entspricht dem Benutzer, der das Fenster maximiert. Zum Beispiel:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.Show();
window.WindowState = WindowState.Maximized;
}
Das Problem hier ist natürlich, dass das Fenster maximiert, nachdem es dauert viel länger, und in einer App wie Mine zeigte, muss das Fenster sofort an Ort und Stelle, um Pop.
Wer kennt eine Lösung?
Sie müssen tatsächlich ** beide ** diese Sache tun. Bitte sehen Sie sich meine Antwort an. +1 sowieso. –