Подтвердить что ты не робот

Изменение начального местоположения окна WPF

Я хотел бы открыть окно WPF в верхней правой части экрана.

Сейчас я могу добиться этого, открыв окно, а затем переместив его (через movewindow в user32.dll). Однако этот подход означает, что окно открывается по умолчанию, полностью загружается, а затем перемещается в верхний правый.

Как я могу это изменить, чтобы я мог указать начальную позицию и размер окна?

4b9b3361

Ответ 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"