对于Xamarin iOS,是否可以绑定到viewmodel中的对象的属性。 例如。如果我们有以下对象:
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();
这可能吗?
答案 0 :(得分:2)
是的,你可以,我们在我们的应用程序中使用了很多次 如果我没记错的话,MvvmCross将这种绑定称为“链式绑定”。
但一定要注意在正确的线程上调用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
。