Я работаю с приложением WPF и использую свою собственную архитектуру, которая сильно напоминает MV-VM / MVC. У меня есть контроллеры для каждого из представлений, и у меня есть ViewModels, привязанные к представлениям.
Например, у меня есть ToolBarView с соответствующими ToolBarViewModel и ToolBar Controller.
Я использую уведомления для обновления всех представления, так что им не нужно ссылаться друг на друга, но это не имеет отношения к моему вопросу.
Каждое из представлений прослушивает событие, которое запускается в их контроллере при обновлении модели. В ToolBarView это выглядит следующим образом.
/*In Constructor in ToolbarView*/
Controller.Updated += UpdateView
/*Event Handler in ToolbarView*/
private void Updateview(object sender,EventArgs e)
{
DataContext = Controller.Model;
//Other Updating if needed
}
Если не очевидно, то, что делает приведенный выше код, говорит, что когда Контроллер запускает событие Updated, чтобы вызвать UpdateView (отправитель объекта, EventArgs e).
Проблема что я испытываю, это то, что при первом вызове UpdateView () все работает нормально, но когда он вызывается во второй раз, DataContext, кажется, все еще привязан к исходной Controller.Model.
Кажется, будто мне нужно освободить DataContext или обновить его, чтобы он каждый раз был привязан к модели.
Контроллер выполняет операции с моделью, и поэтому, когда вызывается UpdateView (), он должен отображать вновь присвоенные значения в этой модели.
Есть ли способ обновить DataContext, или я могу по-другому нужно это сделать?