gpt4 book ai didi

android - 本地列表 :MvxBind binders

转载 作者:可可西里 更新时间:2023-11-01 19:06:25 27 4
gpt4 key购买 nike

我找不到可用的所有类型的 Binder 列表,最近一位同事发现了 local:MvxBind="Visibility Property",这对我们的代码有很大帮助。我相信 MvvMCross 有很多我们还不知道的隐藏宝藏。这些信息在某处可用吗?

我们知道的粘合剂:

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

谢谢!

最佳答案

自动属性绑定(bind)

MvvmCross 绑定(bind)到 native View 上的 C# 属性 - 因此 Xamarin.Android 公开的任何公共(public) C# get/set 属性都可以单向绑定(bind)到。

此外,如果属性 Foo附有签名 Activity public event EventHandler FooChanged然后 MvvmCross 可以双向绑定(bind)它。


自动事件绑定(bind)

MvvmCross 也绑定(bind)到任何 public C# event native View 公开的 s - 只要它们具有 EventHandler签名和 EventHandler<SomeSpecialArgs>

这些可以自动绑定(bind)到ICommand调用者(操作自动绑定(bind)到 Execute 处理程序,但没有自动绑定(bind)到 CanExecute )。


自定义绑定(bind)

除了这些直接的属性之外,MvvmCross 还具有“自定义绑定(bind)”功能。

MvvmCross 默认提供的“自定义绑定(bind)”列表在 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));

一些插件(特别是 Color )也添加了它们自己的绑定(bind)。

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

关于 MvvmCross 自定义控件、动画和 map 的 N+1 个主题也值得关注——它们提供了自定义绑定(bind)的替代机制。

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

关于android - 本地列表 :MvxBind binders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20152826/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com