Изменение начального местоположения окна WPF
Я хотел бы открыть окно WPF в верхней правой части экрана.
Сейчас я могу добиться этого, открыв окно, а затем переместив его (через movewindow в user32.dll). Однако этот подход означает, что окно открывается по умолчанию, полностью загружается, а затем перемещается в верхний правый.
Как я могу это изменить, чтобы я мог указать начальную позицию и размер окна?
Ответы
Ответ 1
Просто установите WindowStartupLocation, Height, Width, Left и Top в xaml:
<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>
Ответ 2
Мне нравится использовать WindowStartupLocation="CenterOwner"
(документы MSDN для него)
Чтобы это работало, вызывающая сторона должна указать себя как владельца, например:
new MyWindow() { Owner = this }.ShowDialog();
Затем просто определите высоту и ширину окна, например:
<Window ...
Height="400" Width="600"
WindowStartupLocation="CenterOwner"
>
...
Ответ 3
Для людей, которым, как я, хотелось установить положение окна на текущее положение мыши, вы можете сделать это следующим образом:
myWindow.WindowStartupLocation = WindowStartupLocation.Manual;
myWindow.Left = PointToScreen(Mouse.GetPosition(null)).X;
myWindow.Top = PointToScreen(Mouse.GetPosition(null)).Y;
Ответ 4
Существует свойство для Window, называемое "WindowStartupLocation"
вы можете найти в окне свойств. Просто выберите Window в конструкторе, а затем перейдите к списку свойств. Поищите "Startup"
или что-то подобное, и вы можете найти это свойство. Измените его на "CenterScreen"
и он совершит сделку. НОТА! Убедитесь, что вы не выбрали сетку вместо окна! В противном случае вы не сможете.
Или вы можете сделать это через редактирование XAML, как некоторые парни писали ранее.
Ответ 5
Вот что сработало для меня (с другим размещением на экране):
<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"