绑定到对象 属性

Binding to an object property

对于 Xamarin iOS,是否可以绑定到视图模型中对象的 属性。 例如。如果我们有以下对象:

public class MyObject: MvxNotifyPropertyChanged
{
    private bool isHidden;
    public bool IsHidden
    {
        get { return isHidden;}
        set { isHidden;= value; RaisePropertyChanged(() => IsHidden}
    }
}

以及下面的ViewModel

public class MyViewModel
    : MvxViewModel
{
    public MyObject myObject;
}

在 MyView 站点上进行以下绑定

this.CreateBinding(myLabel).For("Hidden")
.To<MyViewModel>(vm => vm.MyObject.IsHidden).Apply();

这可能吗?

是的,我们在我们的应用程序中多次使用它。
如果我没记错的话,MvvmCross 将这种绑定称为 "chained binding"。

但一定要注意在正确的线程上调用 MyObject.PropertyChanged 事件(主线程更新您的视图 UI)。
当您处于 ViewModel 级别时,MvvmCross 仅处理在主线程上调用 PropertyChanged 事件(查看 MvxNotifyPropertyChanged 对象实现)

在我的案例中,正确的绑定语法类似于(我希望与您的相同...):

var set = this.CreateBindingSet<MyView, MyViewModel>();
set.Bind(yourLabel)
   .For(v => v.Hidden)
   .To(vm => vm.MyObject.IsHidden);
set.Apply();

此代码必须在您的 MvxViewController 中应用。