Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF的跨平台替代方案_C#_Wpf_Vb.net_Mono_Monomac - Fatal编程技术网

C# WPF的跨平台替代方案

C# WPF的跨平台替代方案,c#,wpf,vb.net,mono,monomac,C#,Wpf,Vb.net,Mono,Monomac,总之,我正在考虑将我的应用程序从VB.net移植到基于C#的MONO项目,这样它就可以在Windows和Mac上运行。然而,我需要一个Mac友好的WPF替代品。它必须具有非常相似的功能。QML(通过QT)不是一个可行的选择,因为它对我们来说成本太高。根据应用程序的功能,您可以将应用程序移植到Silverlight/Moonlight,但是你需要Linux。当然,如果您正在使用客户机的文件系统做大量工作,或者什么都没有,这不是一个选项。Miguel de Icaza建议将WPF替换为Mac。正如他

总之,我正在考虑将我的应用程序从VB.net移植到基于C#的MONO项目,这样它就可以在Windows和Mac上运行。然而,我需要一个Mac友好的WPF替代品。它必须具有非常相似的功能。QML(通过QT)不是一个可行的选择,因为它对我们来说成本太高。

根据应用程序的功能,您可以将应用程序移植到Silverlight/Moonlight,但是你需要Linux。当然,如果您正在使用客户机的文件系统做大量工作,或者什么都没有,这不是一个选项。

Miguel de Icaza建议将WPF替换为Mac。正如他所解释的,没有计划在mono中实现WPF

MonoMac正在进行中。这个世界的某些部分。你们应该从一开始就知道什么是可能的

您必须在一个通用引擎上构建两个不同的UI,但这通常是一个很好的关注点分离


还有一个可能的UI通用代码库。

虽然我不久前接受了一个答案,但如果有人看到这个问题,我想发布我目前正在做的事情

我目前正在使用Python和PyGTK作为GUI,GStreamer作为视频。这将产生与WPF几乎相同的结果(除了一些硬编码动画)。此外,它运行在Windows、Mac和Linux上

编辑:GStreamer并不是为了我的目的而成功的。虽然它在大多数情况下工作良好,但我无法在视频上分层透明的.png图像。我终于改用了AdobeFlash(AdobeAIR)

<编辑2:对于后来的任何人,当SWF的未来都有问题时,我的公司开始使用C++的GTK+/GTKMM和开罗的一些组件来构建我们自己的动画系统。最终,这属于另一个答案的建议…将GUI与平台分开。

还有一个受WPF启发的多平台.NET UI框架


是xaml/wpf的另一种替代方案,也适用于视频游戏引擎。它目前拥有高达10万美元的独立/免费收入,并且是跨平台的。

Windows窗体不是被投射到Mono中吗?除此之外,Silverlight以月光的形式传输,但有时我读到WPF将永远不会出现在Mono上platform@Jason-Mono背后的人几乎没有计划移植WPF,原因有很多。最重要的一点是,这样做没有“开发人员”的兴趣。月光很可能是他们将释放的最接近的东西。还有技术上的原因,如果您想要真正的跨兼容性,那么WPF应用程序不是解决方案。@flq:Windows窗体和WPF完全是两种不同的动物,我已经排除了Windows窗体对于我的应用程序来说甚至是稍微可行的可能性。我必须有一种功能强大得多的可视化标记语言,比如WPF.QML/Qt是开源和免费的,包括IDE!你怎么能说它太贵了?@JasonMc92:如果你能遵守LGPL,它就不会花什么钱。我可能可以像以前那样,用代码运行数据库和文件操作,并且只使用Silverlight作为我的GUI。主要问题是,我是否能够使用本地URI而不是标准URL?我必须运行视频等。我认为如果你让应用程序“脱离浏览器”,你可以做到这一点。我不确定Moonlight是否支持此功能,但如果您的主要目标是MAC,您可能会没事(这取决于您要访问的文件的位置)。是的,Linux支持在我的优先级列表中并不是很高。在我的核心中,与文件系统相关的最大动作是保存一个按程序构建的.txt文件,使用与主程序位于同一位置的数据库,以及从程序文件夹或光盘(取决于构建版本)访问视频和音频文件。将UI与引擎分离是一种很好的做法。但是Jason可能不想写两个UI,我很高兴地说我有一个内置在VB.net中的游戏内核,WPF部分就围绕着它。但是,是的,由于复杂程度的原因,编写两个UI是很困难的。这实际上是一个游戏,仅供参考,尽管我更喜欢在这里得到答案。Gamedev的人对编程没有太大帮助。@JasonMc92:你检查过GTK吗?我不确定它是否适合游戏开发,但这是一个使用mono的共享UI代码的免费解决方案。@Matthieu:MonoMac不是还不完整吗,即一些Cocoa API没有包装?请参阅@RichVel:True,但是github上的项目非常活跃-这些样本可以很好地说明现在可能发生的事情-即使开发人员要求更多的样本。这对尝试使用C#的人有什么帮助?我只是简单地说了我最后做的事情,因为这是我的解决方案。(注意,我是OP,我不接受自己的答案。)今天没有什么比阿瓦隆尼亚更好的了。未来属于跨平台框架。微软在这一领域做得不好(让我们排除Electron,我们知道是谁开发了这项技术)。如果我不得不打赌,我会说谷歌颤振将赢得这场比赛。