Ответ на ваш вопрос: это зависит (не каламбур).Это зависит от многих вещей, какую платформу DI вы используете (Unity, Ninject и т. Д.)?В Unity (у меня есть больше опыта с этим), вы должны определить, какова продолжительность жизни объекта, и в зависимости от его жизни вы можете выполнять вещи в разное время.
Чтобы попытаться быть болееспецифические: как правило, свойство зависимости, как вы там продемонстрировали, будет «установлено», когда создается объект, для которого оно определено.Поэтому, когда создается экземпляр LoginDialog
, следует установить LoginViewModel
.