有人能解釋MVVM框架(如ReactiveUI或MVVM Light)爲Xamarin.Forms應用程序提供了什麼好處?我們可以在我們的視圖模型中實現INotifyPropertyChanged而不使用任何這些框架。 我錯過了什麼嗎?Xamarin.Forms的MVVM框架
回答
除了INotifyPropertyChanged
之外,MVVM框架還有更多。僅舉幾個例子有:
- RelayCommand - 可以提供
ICommand
接口的實現,讓您的委託綁定到視圖類。有用的按鈕 - EventToCommand - 這允許您將事件綁定到視圖模型中的命令。而不必背後使用代碼爲
UIElement Events
這些都是由MVVM框架等是作爲MVVMLight
,通過這意味着你不必在每一個項目實施INotifyPropertyChanged
使用MVVMLight只有兩個班您只需確保ViewModel
繼承自ViewModelBase
,並且您也不必在上述兩個類的每個項目中編寫自己的實現。
最後要提的是,您還可以安裝MVVMLight
的代碼片段。這意味着編寫代碼的速度會更快!
例如,如果您想要引發屬性更改的屬性,請使用mvvmlight屬性片段。同樣,如果你想RelayCommand
財產,你可以只使用mvvmlight RelayCommand
片段
我是Xamarin.Forms(https://github.com/daniel-luberda/DLToolkit.PageFactory)的小型MVVM框架的作者。我會嘗試點使用它的一些優勢,因爲一些功能的其他框架是常見的太:
- 準備使用
INotifyPropertyChanged
實施 - 視圖模型面向導航(剛從
BaseViewModel
或BaseModel
繼承)(你可以將您的導航邏輯,查看型號) - 內置短信輕鬆通過
- 頁面或視圖模型之間的數據/參數頁面緩存和重用(更好的用戶界面體驗的意見/頁重複使用)
- 每個頁面都有權訪問鍵入的ViewModel實例,該實例會自動實例化並連接到BindingContext
這些功能因庫而異。一些更先進的MVVM框架爲您提供了將整個項目移動到不同平臺/ sdks的可能性,因爲它們具有多平臺支持。對於大型項目來說這可能是一筆不錯的交易。
示例代碼示出一些特徵(該碼從一個ViewModel調用):
PageFactory.GetPageFromCache<SecondPageModel>()
.ResetPageModel()
.SendActionToPageModel((model) => { model.Message = "Hello World!"; })
.PushPage();
的模型 - 視圖 - 模型(MVVM)建築圖案記與XAML發明的。該模式通過一個充當View和Model(ViewModel)之間中介的類來強制XAML用戶界面(View)與底層數據(Model)分離。 View和ViewModel通常通過XAML文件中定義的數據綁定進行連接。 View的BindingContext通常是ViewModel的一個實例。 Please click here to see more details and sample code.
你不需要使用ReactiveUI或者MVVM Light,你可以直接使用INotifyPropertyChanged接口來通知客戶端屬性值已經改變了。下面,你可以看到我的ViewModelBase類的代碼,希望這可以幫助你;
public class ViewModelBase : INotifyPropertyChanged
{
#region INotifyPropertyChanged
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
#endregion
}
在這裏我的ViewModel是我從ViewModelBase如何繼承和我如何創建我的財產;
public class ImageButtonViewModel : ViewModelBase
{
// ...
private string header;
public string Header
{
get
{
return header;
}
set
{
header = value;
OnPropertyChanged();
}
}
// ...
}
- 1. Xamarin.Forms Marquee iOS框架
- 2. Xamarin.Forms框架邊框寬度
- 3. Silverlight MVVM框架
- 4. MonoDroid的MVVM框架?
- 5. 實體框架7 Xamarin.Forms
- 6. DataTemplates和MVVM框架
- 7. Catel(MVVM框架)ObservableCollection
- 8. MVVM與ZK框架
- 9. 對於MVVM哪個MVVM框架好?
- 10. 定義Stacklayout在框架內的類(Xamarin.Forms)
- 11. 導航框架和Combobox MVVM
- 12. MVVM Silverlight框架選擇
- 13. MVVM和導航框架
- 14. 什麼是MVVM框架?
- 15. 實體框架WPF/MVVM
- 16. 尋找WPF MVVM框架
- 17. 帶實體框架的WPF MVVM?
- 18. MVVM框架的作用是什麼?
- 19. 帶導航的Silverlight MVVM框架
- 20. 使用kendo ui框架的MVVM使用
- 21. MVVM:頁面內的框架導航
- 22. MVVM並在ASP.NET MVC框架ModelBinders
- 23. 啓動WPF MVVM。使用框架?
- 24. WPF MVVM實體框架分層
- 25. Windows Phone 7 Silverlight MVVM(和其他)框架
- 26. 這MVVM框架有利於SL4?
- 27. 實體框架,MVVM和計算類
- 28. 使用實體框架MVVM驗證
- 29. 在MVVM架構
- 30. iOS MVVM架構
如果INotifyPropertyChanged是你所需要的,那麼這對你有好處。這些框架通常會帶來一些漂亮的工具,如DI,自動加載/綁定等等。他們只是讓生活變得更輕鬆。 –