2013-12-04 3 views
0

У меня есть проект, который содержит три вида: MainView, который содержит два других вида. Два подзаголовка содержат списки объектов (назовем их View A и B), которые в значительной степени независимы. Но иногда есть связь между объектами, которые содержатся в списках. С самого начала времени только объекты из списка «знали» об объектах типа B, тип B не имеет идеи, что A может существовать. Это было предполагаемое поведение и было бы трудно изменить. Но знаю, что у меня есть проблема: объекты из списка B могут быть удалены, но это не очень хорошая идея, когда на нее ссылается объект типа A. Хотел бы я сделать так, чтобы как-то «спросить» вид A, если некоторые из его объектов имеют соединение с объектом, подлежащим удалению. Если да, я бы проинформировал пользователя. Но как я могу это моделировать? Представления A и B не знают друг друга. Пройти через MainView было бы «неправильно». Я бы использовал событие, но если я правильно понимаю Caliburn, я могу только отправить событие, но не могу получить обратную связь. Любые идеи?Как запросить разрешение с другого вида?

ответ

1

EventAggregator выглядит как решение.

  1. Ваш пользователь выбирает объект и нажимает кнопку «Удалить».
  2. Ваш обработчик кликов в представлении B отправляет сообщение1 с идентификатором (или тем, что вы используете для идентификации) объекта для удаления.
  3. View A получает сообщение1 и отправляет сообщение2 с результатом проверки (удалить/не удалять)
  4. View B получает сообщение2 и удаляет объект или предупреждает пользователя.

message1 и message2 полностью независимы, разные типы.

enter image description here

+0

Это очень хорошая картина, спасибо за идею! –

Смежные вопросы