我正在考虑开始使用C#app开发。我有基于网络技术的经验,但我刚开始使用桌面/ MVVM。
我一直在观看和阅读各种mvvmcross教程,我真的很期待使用该框架开发应用程序,但我只是有一个简单的问题,可能与数据绑定有关,而不是mvvmcross本身:
如果我通过mvvmcross库构建我的application.core,那么重用该核心库来开发非mvvmcross目标的UI会相对容易吗?
据我所知,mvvmcross简化了大量的显示逻辑,所以通过这样做,我必须编写代码来使用他们的方法与其他guis连接,但我想知道是否有人可以发表评论
a)是否可能
和
b)如果在我的mvvmcross核心实现中没有大量的变通方法/黑客攻击是可能的。
我的用例是我计划首先使用mvvmcross开发WPF或WinStore,然后,如果有需求,添加Mac UI。但最终,如果需求存在,我希望能够将我的应用程序移植到Linux(可能通过gtksharp,因为它听起来就像现在开发中最远的那样)。我的application.gtk项目是否能够轻松调用/使用mvvmcross核心应用程序中定义的类,方法和函数,或者是否必须重新编写逻辑以便以更适合的方式处理数据gtksharp?
感谢。
答案 0 :(得分:0)
通常在使用MvvmCross开发核心(但实际上使用开发风格的任何Mvvm模式)时,Core不应该依赖于任何UI逻辑,因此应该可以在任何平台上重复使用。但是目前在MvvmCross中没有对gtk的平台支持。
我对gtk并不熟悉,但我认为可以用与Android和iOS类似的方式为linux构建绑定层。
所以理论上你应该能够在Linux上重用核心库,使用Mono,因为这样的Linux绑定层将用于MvvmCross。如果有可能的话,我有兴趣看到有人开始探索。
答案 1 :(得分:0)
对于超级迟到的回复感到抱歉,但我并不认为这太可行,至少如上所述。正如我所看到的,主要问题是MvvmCross仍然可能是大多数核心库的依赖。你当然可以拥有一个核心库作为一个依赖,而不是真正使用它,但这似乎是一种浪费,有点违背问题。
如果没有它作为一个依赖,你会失去很多东西,真的所有的东西,使它成为一个很好的框架。你真正想要做的只是实现INotifyPropertyChanged并解决这个问题。您可能能够使用的其他一些更简单的库包括来自Praeclarum(https://github.com/praeclarum/Bind),Fody.PropertyChanged(https://github.com/Fody/PropertyChanged),Json.NET和SqLite.NET的Bind库,以实现基本但功能强大的核心库,然后可以添加到基于MvvmCross的库,但我不知道是否有任何理由这样做。另一个有用的链接是:http://arteksoftware.com/end-to-end-mvvm-with-xamarin/。