Если вы выполняете настройку DataContext в XAML, либо напрямую, либо с помощью Binding, вы избегаете проблемы пропуска конструктора. Более новые версии инструментов также поддерживают настройку d: DataContext, которая будет вызываться только во время разработки для установки DataContext. Если ваше создание экземпляра не может быть выполнено непосредственно в XAML (то есть в параметрах конструктора), вы можете просто объявить свойство get в MainWindow.xaml.cs, чтобы создать экземпляр и вернуть экземпляр данных проекта. Сохранение всего объекта создания в получателе будет препятствовать его созданию во время выполнения, потому что он никогда не будет вызван.
public MyData { get { return new Person() { Name = "Harry" }; } }
Затем в XAML вы можете привязать d: DataContext для окна к новому свойству.
d:DataContext="{Binding RelativeSource={RelativeSource Self}, Path=MyData}"
Есть много других способов сделать это, но это наиболее близко к пользовательскому интерфейсу, поэтому обычно его легче всего добавить в существующий код. Джош Смит недавно сделал хороший обзор различных вариантов: Данные во время разработки все еще данные