Пришлось поискать, как именно это сделать, так что размещу здесь заметку…
Чтобы дочернее окно открывалось по центру родительского окна, а не там, где его разместит система, нужно добавить в код несколько строчек.
ChildWindow.xaml.cs
public ChildWindow()
{
InitializeComponent();
this.DataContext = this;
this.Owner = App.Current.MainWindow; // set Owner to center the window
}
ChildWindow.xaml
<Window
...
WindowStartupLocation="CenterOwner"
...
>