MvvmCross: RaiseProperty已更改不更新绑定



我正在使用如下所示的视图模型实例化视图:

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();

文本属性在视图模型中定义如下

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

绑定最初在加载时有效。但是当我更改MyTextProp属性并且RaisePropertyChanged被称为UILabel时,UILabel没有更新。

我还绑定到一个工作正常且正常触发的 ICommand。

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

让 MvvmCross 通过这样做来构造你的 MvxViewController:

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

CreateViewControllerIMvxCanCreateTouchView 的扩展方法,因此您进行视图构造的类应该实现该 Inteface,否则该方法将不可用。

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

最新更新