Возможно, потому что вы не установили владельца:
this.Owner = App.MainWindow; // for example
Вот как я это делаю, и он постоянно центрирует окно.
Чтобы расширить то, что прокомментировал Уилл Эддинс, вы можете создать метод перегрузки для ShowDialog () или Show () в вашем окне:
public void ShowDialog(Window owner)
{
this.Owner = owner;
this.ShowDialog();
}
public void Show(Window owner)
{
this.Owner = owner;
this.Show();
}
или перегрузить конструктор:
public MyWindow(Window owner)
: this()
{
this.Owner = owner;
}