Проблема в том, что DataBinding разрешается при вызове Show (и в InitializeComponent, но это не важно для вас, поскольку в этот момент ваш DataContext еще не установлен). Я не думаю, что вы можете предотвратить это, но у меня есть идея для обхода проблемы:
Не устанавливайте DataContext перед вызовом Show (). Вы можете достичь этого (например) следующим образом:
public partial class Window1 : Window
{
public Window1(object dataContext)
{
InitializeComponent();
this.Loaded += (sender, e) =>
{
DataContext = dataContext;
};
}
}
и
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
Window1 window = new Window1(new ViewModel());
window.Show();
}