根据MSDN文档的WindowStartupLocation Property:如何使用鼠标光标在屏幕上最大化WPF窗口?
设置中心屏幕使窗口被定位在包含鼠标光标在屏幕的中心。
虽然MSDN文档为CenterScreen Field本身定义它稍差明确为:
窗口的启动位置是在其上打开的屏幕的中心。
一个简单的测试表明这个工作,因为它应该:
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();
}
}
}
如果测试这一点上双监视器系统,您可以看到当您单击按钮时,新窗口将居中在鼠标光标所在的屏幕上。这正是应该的工作原理。
但是,如果您尝试在显示它之前将窗口设置为最大化,那么新窗口只会在启动应用程序的显示器上最大化。在button_Click事件处理程序更改为以下来看看我的意思:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.WindowState = WindowState.Maximized;
window.Show();
}
现在窗口将只从应用程序启动时屏幕上的最大化,无论身在何处,鼠标光标是当你单击按钮。如果您在之后将窗口状态设置为最大化,则显示它,CenterScreen正常工作。这相当于用户最大化窗口。例如:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.Show();
window.WindowState = WindowState.Maximized;
}
这里的问题,当然,是显示它之后最大化窗口花费更长的时间,在一个应用程序,如矿山,窗口需要立即弹出到位。
任何人都知道解决方案吗?
你实际上需要** **这些事情。请查看我的答案以确保。无论如何。 – 2016-08-27 09:38:43