有兩種方法可以用來實現類型安全,避免在Xamarin.Forms創建MVVM綁定時
第一種方式
參考視圖模型硬編碼字符串和使用nameof
代替。
var myViewModel = new MyViewModel();
BindingContext = myViewModel;
var submitButton = new Button();
submitButton.SetBinding(Button.CommandProperty, nameof(MyViewModel.SubmitButtonPressed));
第二種方式(已取消)
包括視圖模型爲Type
爲SetBinding
方法和使用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密集型操作,導致移動設備性能下降,導致成本很高。
[如何使數據綁定類型安全並支持重構](http://stackoverflow.com/questions/1329138/how-to-make-databinding-type-safe-and-support-refactoring) –
Great點!它是相似的,但Xamarin.Forms使用不同於WPF的綁定機制 –
很高興知道。我將詳細瞭解它如何在Xamarin上運行 –