Мы уже давно используем 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)
, он вообще не сработает. Кажется, что привязка вообще не существует.
Спасибо за любые советы!