本地列表:MvxBind绑定器

Raf*_*tos 14 android mvvmcross

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

我们知道的粘合剂:

  • local:MvxBind ="Text Property"
  • local:MvxBind ="ItemsSource属性; SelectedItem属性"
  • local:MvxBind ="Click ICommandProperty"
  • local:MvxBind ="ItemsSource属性; ItemClick ICommandProperty"
  • local:MvxBind ="可见性属性"

谢谢!

Stu*_*art 10

自动属性绑定

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

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


自动事件绑定

MvvmCross也绑定到任何由本机视图公开的publicC#event- 只要它们有EventHandler签名而不是 EventHandler<SomeSpecialArgs>

这些可以自动绑定到ICommand调用者(操作自动绑定到Execute处理程序,但没有任何内容自动绑定到CanExecute).


自定义绑定

除了这些直接的属性,MvvmCross还具有"自定义绑定"功能.

MvvmCross默认提供的"自定义绑定"列表FillTargetBindings位于AndroidBindingBuilder中 - https://github.com/MvvmCross/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Binding.Droid/MvxAndroidBindingBuilder.cs#L79

        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));
Run Code Online (Sandbox Code Playgroud)

一些插件(特别是Color)也添加了自己的绑定.

有关添加自定义绑定的信息,请参阅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