首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >本地列表:MvxBind绑定程序

本地列表:MvxBind绑定程序
EN

Stack Overflow用户
提问于 2013-11-22 19:19:42
回答 1查看 8.9K关注 0票数 14

我找不到可供使用的所有类型绑定的列表,最近发现了一个关于local:MvxBind=“可见性属性”的链接,这对我们的代码有很大帮助。我相信MvvMCross有很多隐藏的宝石,我们还不知道。信息在什么地方可查到吗?

我们知道的粘合剂:

  • Local:MvxBind=“文本属性”
  • local:MvxBind="ItemsSource属性;SelectedItem属性“
  • Local:MvxBind=“点击ICommandProperty”
  • local:MvxBind="ItemsSource Property;ItemClick ICommandProperty“
  • Local:MvxBind=“可见性”

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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中。

代码语言:javascript
复制
        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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20152826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档