c# – Xamarin.Forms:如何避免在MVVM绑定中对字符串进行硬编码
发布时间:2020-12-15 23:36:41 所属栏目:百科 来源:网络整理
导读:在Xamarin.Forms中,我正在为Button的CommandProperty创建一个MVVM绑定. 有没有办法避免硬编码属性名称的字符串? 这种方式有效,但我想避免硬编码字符串: var submitButton = new Button();submitButton.SetBinding(Button.CommandProperty,"SubmitButtonPre
在Xamarin.Forms中,我正在为Button的CommandProperty创建一个MVVM绑定.
有没有办法避免硬编码属性名称的字符串? 这种方式有效,但我想避免硬编码字符串: var submitButton = new Button(); submitButton.SetBinding(Button.CommandProperty,"SubmitButtonPressed"); 我在StackOverflow上找到了类似的答案,展示了如何在WinForms中执行类型安全,但Xamarin.Forms使用不同的绑定引擎. 解决方法
在Xamarin.Forms中创建MVVM绑定时,有两种方法可用于实现类型安全并避免硬编码字符串.
第一道路 引用View Model并改用nameof. var myViewModel = new MyViewModel(); BindingContext = myViewModel; var submitButton = new Button(); submitButton.SetBinding(Button.CommandProperty,nameof(MyViewModel.SubmitButtonPressed)); 第二种方式(已弃用) 包括View Model作为SetBinding方法的Type并使用Func. var myViewModel = new MyViewModel(); BindingContext = myViewModel; var submitButton = new Button(); submitButton.SetBinding<MyViewModel>(Button.CommandProperty,vm => vm.SubmitButtonPressed); 使用此技术时,如果您在视图模型中重构SubmitButtonPressed属性的名称,新名称将渗透到您的视图!你永远不必再担心错别字了! 更新,2017年1月23日 从Xamarin.Forms v2.3.4开始,不推荐使用上面列出的“使用泛型设置数据绑定”的“第二条道路”. Xamarin.Forms团队向我解释说,通用方法最终在运行时转换为非通用方式,并且由于表达式解析是一项昂贵的CPU密集型操作导致移动设备性能下降,因此导致成本高昂. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |