我想在屏幕的右上角打开一个 WPF 窗口。
现在我可以通过打开窗口然后移动它(通过 user32.dll 中的 movewindow)来实现。但是,这种方法意味着窗口在其默认位置打开,完全加载,然后移动到右上角。
我怎么能改变它,以便我可以指定窗口的初始位置和大小?
我想在屏幕的右上角打开一个 WPF 窗口。
现在我可以通过打开窗口然后移动它(通过 user32.dll 中的 movewindow)来实现。但是,这种方法意味着窗口在其默认位置打开,完全加载,然后移动到右上角。
我怎么能改变它,以便我可以指定窗口的初始位置和大小?
只需在 xaml 中设置 WindowStartupLocation、Height、Width、Left 和 Top:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1"
Height="500" Width="500"
WindowStartupLocation="Manual"
Left="0" Top="0">
</Window>
对于像我这样想将窗口位置设置为当前鼠标位置的人,可以这样操作:
myWindow.WindowStartupLocation = WindowStartupLocation.Manual;
myWindow.Left = PointToScreen(Mouse.GetPosition(null)).X;
myWindow.Top = PointToScreen(Mouse.GetPosition(null)).Y;
我喜欢使用WindowStartupLocation="CenterOwner"
(MSDN docs for it)
调用者需要将自己指定为所有者才能使其正常工作,例如:
new MyWindow() { Owner = this }.ShowDialog();
然后只需定义窗口的高度和宽度,例如:
<Window ...
Height="400" Width="600"
WindowStartupLocation="CenterOwner"
>
...
Window 有一个属性,叫做"WindowStartupLocation"
你可以在属性窗口中找到它。只需在构造函数中选择 Window,然后转到属性列表。搜索"Startup"
或类似,您可以找到该属性。将其更改为"CenterScreen"
,它将达成交易。笔记!确保您没有选择网格而不是窗口!否则你会失败的。
或者您可以像某些人之前写的那样通过 XAML 编辑来完成它。
这对我有用(屏幕上的位置不同):
<Window x:Class="BtnConfig.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:BtnConfig"
mc:Ignorable="d"
Title="MainWindow" Height="142.802" Width="448.089"
Top="288" Left="0">
</Window>
请注意,它不包含:
WindowStartupLocation="Manual"