в моем приложении WPF (шаблон MVVM) я пытаюсь обработать события от нескольких UC (назовем это дочерними) в основном UC, назовите это родительским (тип менеджера по расположению). У каждого ребенка есть событие, чтобы сообщить родителю о закрытии ребенка. Выглядит так:
ParentView
|
- ChildView
|
- ChildView
|
- и т. д.
Как и Джош Смит, я использую рабочую область viewmodel для команды close, а ParentView и ChildView наследуются от WorkspaceViewModel (который сам, конечно, наследует от ViewModelBase). Теперь проблема в том, когда я закрываю ребенка. Событие RequestClose вызывается ParentView, а не ChildView. Но событие зарегистрировано для ребенка. Как это возможно, что RequestClose в WorkspaceViewModel вызывается дочерним, а не родительским?
Я должен добавить к своему описанию проблемы, что в этом случае я ломаю шаблон MVVM и добавляю свой ChildView в коде ParentView:
parentViewGrid.Children.Add(childView)
В этом случае, к сожалению, вряд ли возможно следовать шаблону MVVM. По причинам смотрите здесь: Polyline и MVVM . Я действительно не решил эту проблему. Другими словами, сомнительно, что следование шаблону MVVM в этом случае является преимуществом или недостатком в отношении производительности и сложности.
Надеюсь, вы сможете помочь мне и понять мою проблему. Заранее спасибо.
Кай