У меня есть приложение, которое состоит из следующих трех модулей:
- Поиск (для поиска объектов)
- Список (для отображения результатов поиска)
- Painter (чтобы я мог редактировать объекты) - этот модуль загружается не всегда
(Каждый объект - это фигура, которую я могу редактировать в художнике).
Когда я открываю объект в художнике, он добавляется к объектам, которые уже находятся в художнике, и я могу перемещать и изменять его.
Я использую объект, похожий на EventAggregator, для связи между модулями. Например, чтобы показать результаты поиска, я публикую событие «ShowList», которое перехватывается модулем List (я не уверен, что это лучший способ сделать это, если у кого-то есть идея получше, пожалуйста, прокомментируйте ...).
Одна из функций модуля поиска требует, чтобы он доставлял выбранный объект в художник (если художник доступен), и я не уверен, что будет лучшим способом сделать это ...
Я думал об этих решениях:
Всякий раз, когда выбранный объект в художнике изменяется, он публикует событие PainterSelectedObjectChanged, которое будет перехвачено модулем поиска и сохранено для последующего использования.
Когда выбранный объект нужен поисковому модулю, он публикует событие «RequestingPainterSelectedObject», которое будет перехвачено модулем рисования. Модуль рисования затем установит свойство «SelectedObject» в объекте EventArgs, и когда публикация будет завершена, и мы вернемся в поисковом модуле, у нас будет выбранный объект живописца в объекте EventArgs.
Что ты думаешь? Как правильно это сделать?