我正在开发一个我也喜欢运行的WPF桌面应用程序 Mac通过Xamarin.Mac。我非常谨慎地将核心分开 尽可能将代码编写到PCL中,并使特定于WPF的代码保持精简 尽可能。
UI架构是MVVM。我的所有视图模型都在实现
INotifyPropertyChanged
,在我的核心PCL中。 WPF UI组件
然后可以直接绑定到那些viewmodel属性。
我的问题是:如何使用我的"便携式" 来自Xamarin.Mac端的PCL视图模型,以便我可以使用Cocoa 数据绑定吗
主要问题似乎是,为了与Cocoa互动
数据绑定,viewmodels必须从NSObject
继承,使用
Register
注释以公开属性,并使用
用于通知观察员的WillChangeValue
/ DidChangeValue
方法。一世
我主要没有为PCL中的视图模型找到一种方法
因为如果那些相同的类我不能从NSObject继承它们
将继续在WPF方面使用。
我想避免使用MVVMCross或MVVMLight等框架,因为它们包含了许多我不需要的东西。但是,如果我没有其他方式可以使用它们。
答案 0 :(得分:0)
在我的ViewModelBase中,我使用SetProperty API首先检查该值是否与之前的值不同。如果不同,我使用 MACOS 编译器定义相应地调用WillChangeValue / DidChangeValue,然后调用所有其他平台的RaisePropertyChanged。显然我使用 MACOS 编译器def来子类化NSObject。
我遇到了这个stackoverflow帖子,寻找将ICommand接口绑定到Xamarin.Mac按钮的方法。显然它比我想象的要难。
我想我可以偷看MVVMCross存储库,看看他们是如何完成这项任务的。 无论如何,我相信你现在已经解决了你的多pcl-MVVM困境。 如果您做了与我的方法不同的事情,请分享。