Это решение отлично сработало для меня.
Вот метод, который я нашел для центрирования окна либо в его родительском, либо в основном окне приложения в 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();