Положение окна WPF - PullRequest
       10

Положение окна WPF

6 голосов
/ 02 мая 2011

Ранее я задавал вопрос о создании дочернего окна здесь ... Теперь, когда я открываю дочернее окно, оно не открывается по центру родительского окна. Как настроить его открытие по центру родительского окна?

Ответы [ 3 ]

19 голосов
/ 02 мая 2011

Это решение отлично сработало для меня.

Вот метод, который я нашел для центрирования окна либо в его родительском, либо в основном окне приложения в WPF.Это не слишком отличается от того, как вы это делаете в WinForms.

Для дочернего окна установите его WindowStartupLocation в «CenterOwner».Это заставит его показывать в центре окна-владельца.Свернуть

<Window x:Class="WpfApplication1.TestChild"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="TestChild" Height="300" Width="300"
    WindowStartupLocation="CenterOwner">

Теперь все, что осталось сделать, это установить его владельца перед его отображением.Если код, который вы используете для отображения окна, выполняется внутри класса Window, то вы можете просто использовать это.Свернуть

TestChild testWindow = new TestChild();
testWindow.Owner = this;
testWindow.Show();

Однако это не всегда так;иногда вам нужно отобразить дочернее окно из кода, запущенного на странице или пользовательского элемента управления.В этом случае вы хотите, чтобы дочернее окно было центрировано по отношению к главному окну приложения.Свернуть

TestChild testWindow = new TestChild();
testWindow.Owner = Application.Current.MainWindow;
testWindow.Show();
3 голосов
/ 02 мая 2011

Попробуйте это .

aboutWindow.WindowStartupLocation= WindowStartupLocation.CenterOwner ; 

aboutWindow.ShowDialog(this); 
1 голос
/ 02 мая 2011

Вы можете попробовать это:

 AboutWindow window = new AboutWindow();
 window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
 window.Owner = this;

 window.ShowDialog();
...