将C#WPF .NET 4.0应用程序移植到Mac OS X(Mono?)的建议

时间:2012-03-16 14:01:50

标签: c# wpf linq macos mono

我目前使用WPF和LINQ在MS Visual C#4.5中创建了一个(非商业)应用程序。

为了将来可能移植到Mac OS X,我使用MVVM设计模式来分割逻辑和用户界面。

我想知道: 1)我知道Mono不支持WPF。我使用了很多绑定。是否可以以合理简单的方式将其移植到WinForms(或Mono支持的其他方式)?

2)我想所有LINQ功能都必须改为for / foreach循环?

3)是否有其他考虑或建议我可以考虑或在移植时发出警告?

提前致谢。

2 个答案:

答案 0 :(得分:4)

Silverligt在Mac上运行。如果你的应用程序可以限制在Silverlight中,那么移植将非常简单,因为基本上Silverlight在浏览器中是WPF。在最近发布的Silverlight 5中,您可以在浏览器外运行时访问整个本地文件系统,还可以创建多个窗口。

答案 1 :(得分:4)

正如评论中所提到的,Mono XWT跨平台Widget工具包应该可以解决这个问题 - 如果(截至2012年4月),您愿意使用非常新的代码。

XWT类似于Eclipse / Java的SWT小部件工具包,它直接映射到Mac-OSX,Linux和Windows-WPF的本机操作系统小部件。它的不同之处在于它基于GTK-Sharp库的布局系统和通用API,用于大多数Mono工具堆栈(即MonoDevelop,MonoDoc,Banshee等)。根据FOSDEM幻灯片,XWT旨在用作替换/添加GTK-Sharp用于Mono项目和Xamarin用于MonoDevelop。我的猜测是他们想让MonoDevelop看起来更像是原生的和/或更漂亮的GTK小工具包目前允许,可能会使他们的工具链更加与Eclipse产品相提并论。

在撰写本回答时,XWT工具包仍在进行大量开发(特别是Windows WPF版本),但在所有三个平台上都具有相当的功能。