MvvmCross:RaisePropertyChanged 不更新绑定

MvvmCross: RaisePropertyChanged not updating binding

我正在用这样的 ViewModel 实例化一个视图:

var myView = new MyView { DataContext = new MyViewModel() };

我想让这个视图可以从应用程序的任何地方访问,所以我将视图添加到 rootviewcontroller:

window.RootViewController.View.Add(myView.View);

其中 ViewModel 继承自 MvxViewModel,MyView 继承自 MvxViewController

在 MyView 中,我将 UILabel 绑定到文本 属性,就像这样

this.CreateBinding(myLabel).To<MyViewModel>(vm => vm.MyTextProp).Apply();

文本 属性 在 ViewModel 中定义如下

    private string myTextProp;
    public string MyTextProp
    {
        get { return myTextProp; }
        set
        {
            myTextProp = value;
            RaisePropertyChanged(() => MyTextProp);
        }
    }

绑定最初在加载时起作用。但是,当我更改 MyTextProp 属性 并调用 RaisePropertyChanged 时,UILabel 未更新。

我还绑定到一个 ICommand,它工作正常并正常触发。

而不是var myView = new MyView { DataContext = new MyViewModel() };

让 MvvmCross 通过这样做构建您的 MvxViewController:

var viewController = this.CreateViewControllerFor<MyViewModel>();

CreateViewControllerIMvxCanCreateTouchView 的扩展方法,因此您构建视图的 class 应该实现该接口,否则该方法将不可用。

我知道 IMvxCanCreateTouchView 是由 MvxTouchViewPresenterMvxViewController 实现的,因此您可以从您的 Presenter 或另一个 MxvViewController 调用该方法。