绑定到对象 属性
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
中应用。
对于 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
中应用。