Просмотр моделей и внедрение зависимостей - PullRequest
0 голосов
/ 01 июля 2018

В большом многопользовательском приложении у меня есть следующие настройки:

  • A Context класс, содержащий ссылку на корень моей модели данных. Отсюда я могу добраться до всех других моделей.
  • Класс Commander, который имеет методы для манипулирования моделью данных. Например, для объекта Layout существует метод Commander.ResizeLayout(layout, width, height). Обратите внимание, что в основе этого класса лежит архитектура клиент-сервер; сервер связывается перед локальным обновлением свойств Layout.width и Layout.height.
  • Внутренне, Commander имеет ссылку на Context и гарантирует, что после обработки команды соответствующие объекты обновляются.
  • Теперь я работаю над моделью представления (скажем, LayoutViewModel), которая используется для пользовательского элемента управления (LayoutForm) для редактирования ширины и высоты Layout.

Моя цель состоит в том, чтобы представление (модель) использовало класс Commander для обработки любых изменений, внесенных в представление. Прямо сейчас я передаю Context и Commander конструктору главного окна. В файлах XAML объект Commander вместе с соответствующими объектами данных (например, выбранный Layout) передаются в меньшие элементы управления, такие как LayoutForm.

.

Вот моя борьба: нехорошо продолжать проходить вокруг объектов, таких как Commander, через привязки. В то же время я также считаю, что использование глобальных переменных (например, App.Commander) - это не тот путь, и внедрение зависимостей из Microsoft.Extensions.DependencyInjection (которое я использую в различных других проектах в своем решении), по-видимому, не доступно в глобальном масштабе в WPF.

Каким будет правильный способ доступа к объекту, подобному Commander, из низкоуровневого элемента управления? Или я здесь упускаю большую точку?

Большое спасибо за любые предложения, которые помогают мне двигаться вперед!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...