本地列表:MvxBind绑定器

时间:2013-11-22 19:19:43

标签: android mvvmcross

我找不到可供使用的所有类型绑定器的列表,最近发现了一个关于本地的同事:MvxBind =“可见性属性”,这对我们的代码有很大帮助。我相信MvvMCross有很多隐藏的宝石,我们还不知道。信息是否可以在某处获得?

我们知道的粘合剂:

  • local:MvxBind =“Text Property”
  • local:MvxBind =“ItemsSource属性; SelectedItem属性”
  • local:MvxBind =“Click ICommandProperty”
  • local:MvxBind =“ItemsSource属性; ItemClick ICommandProperty”
  • local:MvxBind =“Visibility Property”

谢谢!

1 个答案:

答案 0 :(得分:10)

自动属性绑定

MvvmCross绑定到本机视图上的C#属性 - 因此Xamarin.Android公开的任何公共C#get / set属性都可以单向绑定。

此外,如果属性Foo伴随着签名public event EventHandler FooChanged的事件,那么MvvmCross可以双向绑定它。


自动事件绑定

MvvmCross还会与本机视图公开的任何public C#event绑定 - 只要他们有EventHandler个签名且 {{1 }}

这些可以自动绑定到EventHandler<SomeSpecialArgs>个调用者(该操作会自动绑定到ICommand处理程序,但会自动绑定到Execute


自定义绑定

除了这些直接的属性,MvvmCross还拥有“自定义绑定”功能。

MvvmCross默认提供的“自定义绑定”列表位于AndroidBindingBuilder中的CanExecute - 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)); )也添加了自己的绑定。

有关添加自定义绑定的信息,请参阅http://slodge.blogspot.co.uk/2013/06/n28-custom-bindings-n1-days-of-mvvmcross.html

关于MvvmCross自定义控件,动画和地图上的N + 1主题也值得关注 - 它们为自定义绑定提供了替代机制。

有关MvvmCross绑定的更多信息,请参阅https://github.com/MvvmCross/MvvmCross/wiki/Databinding

相关问题