将视图重新绑定到新的ViewModel后,Caliburn操作绑定不会更新

时间:2018-11-06 05:44:12

标签: caliburn.micro

我们使用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属性将用新的视图模型刷新。如果单击该按钮,该方法将在 old 视图模型上调用。

使用ViewModelBinder.Bind(...)之后是否不应该刷新这些绑定?

有趣的是,如果我(在新的视图模型上)显式调用NotifyOfPropertyChanged(() => CanClick),它将根本不会触发。似乎绑定根本不存在。

感谢您的任何建议!

0 个答案:

没有答案