Способ внедрения зависимостей работает почти во всех случаях, когда вы разрешаете или получаете экземпляр типа, который затем использует конструктор с наибольшим количеством параметров для предоставления вам объекта.
Если вы регистрируете конкретный объект дляИнтерфейс (или просто тип) затем разрешает / получает класс, который использует одну из этих вещей в своем ctor, а затем DI предоставляет зарегистрированный экземпляр.
С MVVMLight у вас есть SimpleIoc, а SimpleIoc.Default эквивалентентот статический сервис, о котором ты думаешь.Это очень просто.
С simpleioc, как только вы получаете экземпляр модели данного типа, это одиночный объект.Вы можете форсировать другой экземпляр, передавая уникальный ключ, но все они кэшируются.Вы можете получить экземпляр с параметрами и, возможно, заменить текущий объект.Я не уверен, случайно.Может потребоваться более сложный контейнер DI.
Кроме этого.
Поскольку вы используете разные окна, это создает некоторую сложность в том, что вы хотите создать экземпляр окна, и это будету вас должен быть текстовый текст, который нужно как-то предоставить с вашими параметрами.
Сначала вы можете использовать viewmodel.Вы получаете inavigationservice из DI или ресурсов или статического.
У вас есть метод DoWindow (Object vm).
Когда вы хотите перемещаться, вы, вероятно, знаете параметры для vm.Добавьте в вашу модель представления параметры.Новое окно, которое вы используете для всех видов.Установите его содержание для вашей viewmodel.Это связано с тем, что у вас есть как окна сейчас.За исключением того, что вы делаете их usercontrols.Используйте Datatype = "vmtype", чтобы связать представление как шаблон с viewmodel.Свяжите заголовок вашего окна с Content.Title и, конечно, добавьте свойство Title к базовой модели представления.
В качестве альтернативы, в приложении с одним окном вы можете управлять контентом, заполняющим область, в которой будут отображаться виды. Bindсодержимое этого свойства currentviewmodel, и вы можете использовать первую навигацию viewmodel в этом окне.