2011-06-15 3 views
2

Иногда объект Domain Model с бизнес-логикой (DDD) при вызове метода запускается событие. В моей ситуации viewmodel (для данного представления) инкапсулирует объект домена и должен регистрироваться и реагировать на эти события домена (я должен использовать события, потому что тот же объект домена может управляться многими слабо связанными представлениями вместе с их режимами просмотра) ,Wpf: datatemplates и управление подпиской на события

Мне также нужно отменить регистрацию тех событий, когда этот конкретный контекст скрыт. Я могу обрабатывать этот регистр/отменять регистрацию/распоряжаться параллельно с отображением/скрытием/распоряжаться этим представлением, используя привязку данных, программно или что угодно, если сценарий достаточно прост ...

Проблема возникает, когда логика визуализации поставляется с DataTemplates. Как узнать, когда этот datatemplate будет скрыт, чтобы я мог отменить регистрацию моих событий? это лучший способ с wpf справиться с этим, вместо добавления дополнительных событий?

Какова наилучшая практика для обработки этого сценария в хорошем подходе к MVVM?

Редактировать: ok, проблема структурная. иногда выбор, сделанный внутри проекта, заставлял нас работать нетипично ... в хорошем mvvm-подходе эта проблема не должна возникать.

ответ

1

Я был бы осторожен в том, чтобы сделать ViewModel зависимым от представления, чтобы все было правильно.

Итак, что бы я сделал, это предоставить свойство (Показать? Видимое? Открыть?) В ViewModel, которое имеет привязку TwoWay с представлением, чтобы ViewModel мог контролировать свойство.

+0

Да, конечно, я бы использовал привязку. но у вас была такая же проблема с одноразовыми режимами просмотра? – nemenos

+0

Нет. Я никогда не чувствовал необходимости распоряжаться ими. Однако я могу себе представить, что огромное приложение, работающее в течение длительного времени, может в конечном итоге получить слишком много выделенной памяти. В этих случаях я попытался бы найти профиль и найти, где ссылки не позволяют собирать мусор. Отслеживание с использованием событий кажется слишком большим количеством домашнего хозяйства (и склонности к ошибкам) ​​для меня. –

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