De acuerdo con la documentación de MSDN para la WindowStartupLocation Property:¿Cómo puedo maximizar la ventana de WPF en la pantalla con el cursor del mouse?
Configuración CenterScreen provoca una ventana que se coloca en el centro de la pantalla que contiene el cursor del ratón.
Aunque el doc MSDN para la CenterScreen Field sí mismo lo define algo menos claramente como:
La ubicación de inicio de una ventana es el centro de la pantalla en la que se abre.
Una prueba simple muestra de este trabajo como debería:
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();
}
}
}
Si probar esto en un doble monitor, puede ver que la nueva ventana se centrará en la pantalla donde está el cursor del mouse cuando hace clic en el botón. Así es exactamente como debería funcionar.
Sin embargo,, si intenta configurar la ventana para maximizar antes de mostrarla, la nueva ventana solo se maximizará en la pantalla desde la que inició la aplicación. Cambiar el controlador de eventos Button_Click a la siguiente para ver lo que quiero decir:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.WindowState = WindowState.Maximized;
window.Show();
}
Ahora, la ventana sólo maximizará en la pantalla desde la que se inicia la aplicación, sin importar donde el cursor del ratón es cuando se hace clic en el botón . Si configura el estado de la ventana como maximizado después de lo muestra, CenterScreen funciona correctamente. Esto es equivalente a que el usuario maximice la ventana. Por ejemplo:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.Show();
window.WindowState = WindowState.Maximized;
}
El problema aquí, por supuesto, es que la maximización de la ventana después de demostrar que se necesita mucho más tiempo y en una aplicación como la mía, la ventana necesita pasar por el lugar de inmediato.
¿Alguien sabe de una solución?
Realmente necesita hacer ** ambas ** esas cosas. Por favor, mira mi respuesta para asegurarte. +1 de todos modos. –