есть сценарий с наследованием, когда предложенный вами подход впечатляет:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Title = "W 1";
ShowDialog();
}
}
public partial class Window2 : Window1
{
public Window2()
{
InitializeComponent();
Title = "W 2";
}
}
попытка создать var w = new Window2();
будет блокировать выполнение ctor Window2, пока модальное окно с заголовком "W 1" не будет закрыто. w.ShowDialog()
выдаст исключение после этого.
в обычных кодировках пользователь может захотеть установить некоторые свойства Window перед его отображением, например, установить DataContext.
так что не нарушайте принцип единой ответственности, и пусть конструктор и метод ShowDialog выполняют свою работу отдельно