I couldn't find a list of all type of binders available for use, recently a collegue found about local:MvxBind="Visibility Property" and that helped a lot with our code. I belive that MvvMCross has a lot of hidden gems that we don't know yet. Is the information available somewhere?
Binders that we know:
Thanks!
MvvmCross binds to C# properties on native Views - so any public C# get/set property exposed by Xamarin.Android can be one-way bound to.
Further, if the property Foo
is accompanied by an event of signature public event EventHandler FooChanged
then MvvmCross can two-way bind to it.
MvvmCross also binds to any public
C# event
s which are exposed by native views - as long as they have EventHandler
signatures and not EventHandler<SomeSpecialArgs>
These can be automatically bound to ICommand
callers (the action is automatically bound to the Execute
handler, but nothing is automatically bound to the CanExecute
).
Beyond these straight-forward properties, MvvmCross also has facilities for "custom bindings".
The list of "custom bindings" that MvvmCross supplied by default is in FillTargetBindings
in 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));
A couple of the plugins (notably Color
) also add their own bindings.
For information on adding your own custom bindings, see http://slodge.blogspot.co.uk/2013/06/n28-custom-bindings-n1-days-of-mvvmcross.html
The N+1 topics on MvvmCross custom controls, on animation and on maps are also worth watching - they provide alternative mechanisms to custom bindings.
For more on MvvmCross binding, see https://github.com/MvvmCross/MvvmCross/wiki/Databinding
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With