Cocoa (MonoMac) & WinForms (or WPF) frontend with common c# backend

Cocoa (MonoMac) & WinForms (or WPF) frontend with common c# backend

我正在设计一个桌面应用程序(LOB 类型),需要在 MacOSX 上 运行、Windows 和 Linux。我们一直专注于 WinForms,但由于在 MacOS 上不稳定,我们不得不放弃它(Linux 到目前为止还不错)。

我想知道是否有任何代码示例、back-end/api 设计指南以及如何以良好的方式完成此操作。

我发现的唯一示例是 Mono/C# 个针对 UI 平台之一的示例 - 但不是两个。

基本上,

谢谢, 伊夫

经过一番研究后,我得出了两个选择

两者都是 .Net 跨平台 UI 工具包,如果您愿意,也可以是框架,它们抽象出 UI 的具体(平台特定)实现。

撰写本文时

  • Xwt 支持 Windows(WPF、Gtk#)、MacOS(MonoMac、Gtk#)和 Linux(Gtk#)。
  • Eto.Forms 支持 Windows(WinForms、WPF(带 GDI+ 或 Direct2D)和 Gtk#)、MacOS(MonoMac 或 Xamarin.Mac)、Linux( Gtk#2,Gtk#3),iOS (Xamarin.iOS)。并宣布支持 Android (Xamarin.Android)、Windows 8.x 和 Windows Phone.

就我个人而言,我的选择是 Eto.Forms,因为它具有很强的理念和易用性 + 在其主页 GitHub 上列出了很好的演示应用程序。但我建议两者都检查一下并做出自己的选择。

我不确定是否还有其他选择

和 Eto.Forms 具有数据绑定,您可以使用 MVVM:

https://github.com/picoe/Eto/wiki/Data-Binding

我不确定其他人是否有数据绑定。

这是 ETO 如何使用 MVVMLight 和数据绑定的示例:

  • 这是包含用户集合的 ViewModel,此 ViewModel 存在于 Windows 和 Mac 项目之间共享的可移植项目中: ViewModel
  • 这是一个 ListViw 绑定到用户集合的视图,这个视图也存在于 Windows 和 Mac 项目之间共享的可移植项目中: View

这意味着 View 和 ViewModel 在 Mac 和 Windows 项目之间共享。