Bra*_*ick 3 c# binding mvvm xamarin xamarin.forms
在Xamarin.Forms,我创建一个MVVM为绑定Button的CommandProperty.
有没有办法避免硬编码属性名称的字符串?
这种方式有效,但我想避免硬编码字符串:
var submitButton = new Button();
submitButton.SetBinding(Button.CommandProperty, "SubmitButtonPressed");
Run Code Online (Sandbox Code Playgroud)
我在StackOverflow上找到了类似的答案,展示了如何在WinForms中执行类型安全,但Xamarin.Forms使用不同的绑定引擎.
在Xamarin.Forms中创建MVVM绑定时,有两种方法可用于实现类型安全并避免硬编码字符串.
引用视图模型并nameof改为使用.
var myViewModel = new MyViewModel();
BindingContext = myViewModel;
var submitButton = new Button();
submitButton.SetBinding(Button.CommandProperty, nameof(MyViewModel.SubmitButtonPressed));
Run Code Online (Sandbox Code Playgroud)
包括视图模型作为Type对SetBinding方法和使用Func.
var myViewModel = new MyViewModel();
BindingContext = myViewModel;
var submitButton = new Button();
submitButton.SetBinding<MyViewModel>(Button.CommandProperty, vm => vm.SubmitButtonPressed);
Run Code Online (Sandbox Code Playgroud)
使用此技术时,如果您SubmitButtonPressed在视图模型中重构属性的名称,新名称将渗透到您的视图!而你永远不必再担心错别字!
从Xamarin.Forms v2.3.4开始,不推荐使用上面列出的"使用泛型设置数据绑定"的"第二条道路".Xamarin.Forms团队向我解释说,通用方法最终在运行时转换为非通用方式,并且由于表达式解析是一项昂贵的CPU密集型操作导致移动设备性能下降,因此导致成本高昂.
| 归档时间: |
|
| 查看次数: |
305 次 |
| 最近记录: |