簡體   English   中英

Xamarin.Mac MVVM模式的最佳做法

[英]Best practices for Xamarin.Mac MVVM pattern

我正在開發WPF桌面應用程序,我也想通過Xamarin.Mac在Mac上運行。 我已經非常小心地將盡可能多的核心代碼分離到PCL中,並使WPF特定的代碼盡可能地薄。

UI體系結構是MVVM。 我實現INotifyPropertyChanged所有視圖模型都在我的核心PCL中。 然后,WPF UI組件可以直接綁定到那些viewmodel屬性。

我的問題是:如何從Xamarin.Mac端使用“便攜式” PCL視圖模型,以便可以使用Cocoa數據綁定?

主要問題似乎在於,為了與Cocoa數據綁定進行交互,視圖模型必須從NSObject繼承,使用Register注釋公開屬性,並使用WillChangeValue / DidChangeValue方法通知觀察者。 我沒有為PCL內部的視圖模型執行此操作的方法,主要是因為如果要從WPF端繼續使用這些相同的類,就不能讓它們從NSObject繼承。

我想避免使用諸如MVVMCross或MVVMLight之類的框架,因為它們包含了許多我不需要的東西。 但是,如果沒有其他方法,我可以使用它們。

具有諷刺意味的...。我正處在您差不多一年后提到的十字路口。 我能夠在不使用MVVMLight或MVVMCross的情況下完成此任務。

在我的ViewModelBase中,我使用SetProperty API首先檢查該值是否與先前的值不同。 如果不同,我將使用MACOS編譯器定義相應地調用WillChangeValue / DidChangeValue,然后對所有其他平台調用RaisePropertyChanged。 顯然我使用了MACOS編譯器def來繼承NSObject。

我遇到了這個stackoverflow帖子,尋找一種將ICommand接口綁定到Xamarin.Mac按鈕的方法。 顯然,這比我想的要難。

我想我可以看一下MVVMCross存儲庫,看看他們是如何完成這項任務的。 無論如何,我確定您現在已經解決了多pcl-MVVM難題。 如果您做了與我的方法不同的事情,請分享。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM