我找不到可供使用的所有类型绑定的列表,最近发现了一个关于local:MvxBind=“可见性属性”的链接,这对我们的代码有很大帮助。我相信MvvMCross有很多隐藏的宝石,我们还不知道。信息在什么地方可查到吗?
我们知道的粘合剂:
谢谢!
发布于 2013-11-24 22:07:39
自动属性绑定
MvvmCross绑定到本机视图上的C#属性-因此由Xamarin.Android公开的任何公共C# get/set属性都可以单向绑定到。
此外,如果属性Foo附带有签名public event EventHandler FooChanged事件,那么MvvmCross可以双向绑定到它。
自动事件绑定
MvvmCross还绑定到由本机视图公开的任何public C# event,只要它们具有EventHandler签名和而不是 EventHandler<SomeSpecialArgs>。
它们可以自动绑定到ICommand调用方(操作自动绑定到Execute处理程序,但nothing自动绑定到CanExecute)。
自定义绑定
除了这些直接的属性外,MvvmCross还提供了“自定义绑定”的功能。
默认情况下,MvvmCross提供的“自定义绑定”列表在AndroidBindingBuilder - https://github.com/MvvmCross/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs#L79中的FillTargetBindings中。
registry.RegisterCustomBindingFactory<TextView>("Text",
textView => new MvxTextViewTextTargetBinding(textView));
registry.RegisterPropertyInfoBindingFactory((typeof(MvxAutoCompleteTextViewPartialTextTargetBinding)),
typeof(AutoCompleteTextView), "PartialText");
registry.RegisterPropertyInfoBindingFactory(
typeof(MvxAutoCompleteTextViewSelectedObjectTargetBinding),
typeof(AutoCompleteTextView),
"SelectedObject");
registry.RegisterPropertyInfoBindingFactory(typeof(MvxCompoundButtonCheckedTargetBinding),
typeof(CompoundButton), "Checked");
registry.RegisterPropertyInfoBindingFactory(typeof(MvxSeekBarProgressTargetBinging), typeof(SeekBar),
"Progress");
registry.RegisterCustomBindingFactory<View>("Visible",
view => new MvxViewVisibleBinding(view));
registry.RegisterCustomBindingFactory<View>("Hidden",
view => new MvxViewHiddenBinding(view));
registry.RegisterCustomBindingFactory<ImageView>("Bitmap",
imageView => new MvxImageViewBitmapTargetBinding(imageView));
registry.RegisterCustomBindingFactory<ImageView>("DrawableId",
imageView => new MvxImageViewDrawableTargetBinding(imageView));
registry.RegisterCustomBindingFactory<ImageView>("DrawableName",
imageView => new MvxImageViewDrawableNameTargetBinding(imageView));
registry.RegisterCustomBindingFactory<ImageView>("AssetImagePath",
imageView => new MvxImageViewImageTargetBinding(imageView));
registry.RegisterCustomBindingFactory<MvxSpinner>("SelectedItem",
spinner =>
new MvxSpinnerSelectedItemBinding(
spinner));
registry.RegisterCustomBindingFactory<AdapterView>("SelectedItemPosition",
adapterView =>
new MvxAdapterViewSelectedItemPositionTargetBinding
(adapterView));
registry.RegisterCustomBindingFactory<MvxListView>("SelectedItem",
adapterView =>
new MvxListViewSelectedItemTargetBinding
(adapterView));
registry.RegisterCustomBindingFactory<RatingBar>("Rating",
ratingBar => new MvxRatingBarRatingTargetBinding(ratingBar));
registry.RegisterCustomBindingFactory<View>("LongClick",
view =>
new MvxViewLongClickBinding(view));
registry.RegisterCustomBindingFactory<MvxRadioGroup>("SelectedItem",
radioGroup => new MvxRadioGroupSelectedItemBinding(radioGroup));一些插件(特别是Color)也添加了自己的绑定。
有关添加自定义绑定的信息,请参阅http://slodge.blogspot.co.uk/2013/06/n28-custom-bindings-n1-days-of-mvvmcross.html。
关于自定义控件、动画和地图的N+1主题也值得关注--它们提供了自定义绑定的替代机制。
有关MvvmCross绑定的更多信息,请参见https://github.com/MvvmCross/MvvmCross/wiki/Databinding
https://stackoverflow.com/questions/20152826
复制相似问题