Привязки действия Caliburn не обновляются после повторного связывания представления с новой моделью представления - PullRequest
0 голосов
/ 06 ноября 2018

Мы уже давно используем Caliburn Micro, и все отлично работает, кроме одной вещи.

Одному из наших представлений иногда требуется получить обновленную модель представления. Когда у нас есть новая viewmodel, мы обновляем привязку view-viewmodel, например

public void ChangeContext(Screen viewModel, Screen newContext)
{
    if (viewModel != null)
    {
        var view = (Window)viewModel.GetView();
        ViewModelBinder.Bind(newContext, view, null);
    }
}

Обычно это работает, и наши элементы управления обновляются в представлении.

Но все привязки действий и защитные элементы (свойства CanDoSomething) не обновляются. Если у меня есть кнопка с x:Name="Click", свойство CanClick будет не обновляться с новой моделью представления. Если я нажму кнопку, метод будет вызван для старой модели представления.

Разве эти привязки не должны обновляться после использования ViewModelBinder.Bind(...)?

Интересно, что если я (в новой модели представления) явно вызову NotifyOfPropertyChanged(() => CanClick), он вообще не сработает. Кажется, что привязка вообще не существует.

Спасибо за любые советы!

...