Обновить DataContext для представлений в WPF?

Я работаю с приложением 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, или я могу по-другому нужно это сделать?

5
задан TheJediCowboy 31 March 2011 в 21:16
поделиться