Зависимости, проходящие через иерархические модели представления

Зависимости, проходящие через иерархические модели представления
Зависимости, проходящие через иерархические модели представления - ferjeancarlo @ Unsplash

Я не думаю, что у вас есть проблема

Ваш дизайн в порядке, вам просто нужно поднять его на еще один уровень и иметь модель представления на уровне приложения.
public class AppViewModel
{
   private IDependencyWhatever; //I have all the dependencies, because I am the application which rules them all


   private MainWindow main;
   public void OnLoad()
   {
      this.mainVM = new MainWindowViewModel(...)
      this.main = new MainWindow(mainVM)
      this.mainVM.NewWindowButtonClicked += this.OpenSubWindow
   }

   private List<SubWindow> subWindows
   public ICommand OpenSubWindow() //are ICommands still a thing?
   {
     //whatever, you have access to all dependencies
     this.subwindows.Add(new SubWindow(new SubWindowViewModel(...)) //keep track so we have a reference
   }
}

Эта "ViewModel" может не иметь вида, возможно, мы можем просто использовать App.cs или что-то еще, но она хранит ссылки на все в приложении и предотвращает ваш сценарий с сиротливыми всплывающими окнами/диалогами, которые не имеют возможности получить зависимости или взаимодействовать с частями приложения, не находящимися на той же ветви дерева модели представления.

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - Моделирование данных за 9 минут

Прикрепленное видео 2 - Часть 3 Модели представления знаний Логические, фреймовые, сетевые


LetsCodeIt, 1 мая 2023 г., 18:06