当前位置: 首页 > 编程语言 > C#

FluentBindings和UIButton标题分享

时间:2023-04-10 18:52:26 C#

FluentBindings和UIButtonTitle由于我的UI经常需要有本地化的字符串,所以我的视图模型提供了视图使用的所有字符串。这包括按钮上的标题之类的东西。在iOS端,按钮标题是通过SetTitle方法设置的。为了让视图模型字符串=>按钮标题映射工作,MvvmCross做了一些神奇的绑定转换以使其工作得很好。假设我的视图中有一个名为Foo的UIButton,我想将其标题映射到视图模型中的属性ButtonLabel。知道以下设置此类绑定的方法:this.AddBindings(newDictionary(){{Foo,"TitleButtonTitle"}});可以使用MvvmCross中的FluentBinding系统设置吗?我一直在阅读MvvmCross源代码,但我还没有接触到绑定代码。以下不起作用(因为该按钮实际上没有Title属性-它有一个SetTitle方法):varset=this.CreateBindingSet();set.Bind(Foo).For(b=>b.Title).To(vm=>vm.ButtonTitle);设置.应用();有没有其他方法可以使用FluentBindings达到预期的结果?set.Bind(Foo).For(b=>b.Title).To(vm=>vm.ButtonTitle);不会编译,因为按钮没有Title属性。但是,Xamarin.ios的默认MvvmCross配置具有为UIButton和“Title”定义的自定义绑定-请参阅:因此您应该能够调用:set.Bind(Foo).For("Title").To(vm=>vm.ButtonTitle);这应该设置相同的绑定:this.AddBindings(newDictionary(){{Foo,"TitleButtonTitle"}});有关自定义绑定的简要介绍,请参阅:https:///speakerdeck.com/cirrious/custom-bindings-in-mvvmcross在较新版本的MvvmCross5.x中,有基于强类型代码的绑定属性。它们是这样完成的:set.Bind(Button).For(v=>v.BindTitle()).To(vm=>vm.ButtonTitle);确保添加:使用MvvmCross.Binding.iOS;可以在文档中找到扩展属性的完整列表,这里是包含更改的PR。以上是C#学习教程:FluentBindings和UIButton标题分享的所有内容.如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: