根据WindowStartupLocation属性的MSDN文档:
设置CenterScreen会使窗口位于包含鼠标光标的屏幕中央.
虽然CenterScreen字段的MSDN文档本身定义得不那么明确:
窗口的启动位置是打开它的屏幕的中心.
一个简单的测试显示这应该工作:
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>
Run Code Online (Sandbox Code Playgroud)
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果在双监视器系统上测试它,您可以看到当您单击按钮时,新窗口将位于鼠标光标所在的屏幕上.这正是它应该如何运作的.
但是,如果在显示窗口之前尝试将窗口设置为最大化,则新窗口将仅在启动应用程序的显示器上最大化.将button_Click事件处理程序更改为以下内容以查看我的意思:
void button_Click(object sender, RoutedEventArgs e)
{
Window window = new Window();
window.WindowStartupLocation = WindowStartupLocation.CenterScreen;
window.WindowState = WindowState.Maximized;
window.Show();
}
Run Code Online (Sandbox Code Playgroud)
现在,无论单击按钮时鼠标光标在哪里,窗口都只会在启动应用程序的屏幕上最大化.如果在显示窗口状态后将其设置为最大化,则CenterScreen可正常工作.这相当于用户最大化窗口.例如: …
我在C#上使用wpf来设计GUI,我想从xaml代码中获取屏幕大小(宽度和高度的值).
我知道如何从C#代码中获取它们
Width = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
Height = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
Run Code Online (Sandbox Code Playgroud)
但我不知道如何从XAML代码中获取它们.