The problem was in my Bootstrapper
.
In the InitializeShell
method I resolved a Shell from the container using this code:
Application.Current.MainWindow = (Window)ServiceLocator.Current.GetInstance<Shell>();
I changed this to instead use the already initialized shell:
Application.Current.MainWindow = (Window)this.Shell;
Im still a bit confused by this but I think it has to do with unity creating new object and not singletons per default when resolving.