什么是WPF / XAML的开源替代品?

如果我们从HTML / CSS中学到了什么东西,声明性语言(如XML)在描述用户界面方面做得很好,因为:

  1. 构build能够有效地对代码进行模板化的代码预处理器很容易。
  2. 该代码是在一个良好定义结构良好(理想)格式,所以很容易parsing。
  3. 已经存在用于有效分析或抓取基于XML的源文件的技术。
  4. 用户界面的脚本代码变得更简单,更容易理解。
  5. 它足够简单,devise者能够自己devise界面。
  6. 程序员很喜欢创buildUI,因此devise人员应该很容易。

最近我看了一下WPF应用程序(即XAML)的内容,它看起来非常熟悉HTML中使用的声明性语言风格。

目前桌面用户界面开发的状态在很大程度上被分解了,否则在graphics用户界面devise(IE,GTK,XUL,Qt,Winforms,WPF等)领域将不会有太多重复的工作。

只有Python有45个GUI平台

什么是一些代表这些特征的开源GUI:

  • 标准化
  • 平台独立
  • 声明性标记语言
  • 语言不可知的

WPF,或者更具体地说,XAML似乎是朝着正确的方向迈出的一步。

更新:

非常感谢信息,保持联系'。 以下是我从评论和答案中收集的选项。

GladeXML

  • 编辑器: Glade界面devise器
  • 操作系统平台:全部
  • GUI平台: GTK +
  • 语言:C(libglade),C ++,C#(Glade#),Python,Ada,Pike,Perl,PHP,Eiffel,Ruby

XRC(XML资源)

  • 编辑: wxGlade , XRCed , wxDesigner , DialogBlocks (非免费)
  • 操作系统平台:全部
  • GUI平台: wxWidgets
  • 语言:C ++,Python( wxPython ),Perl( wxPerl ),.NET( wx.NET )

基于XML的格式不是免费的,不是跨平台的,或者是语言特定的

XUL

  • 编辑:任何基本的文本编辑器
  • OS平台:任何运行支持XUL的浏览器的操作系统
  • GUI平台:Gecko引擎?
  • 语言:C ++,Python,Ruby作为插件语言而不是基础语言

注意:我不确定XUL是否值得在这个列表中提到,因为它不是桌面GUI语言,更不是一个make-webapps-运行在桌面上的语言。 另外,它需要一个浏览器运行。 IE,它是“桌面的DHTML”。

CookSwing

  • 编辑器: Eclipse通过WindowBuilder , NetBeans 5.0 (非免费)通过Swing GUI Builder又名Matisse
  • 操作系统平台:全部
  • GUI平台:Java
  • 语言:仅限Java

XAML(月光)

  • 编辑: MonoDevelop
  • 操作系统平台:仅Linux和其他基于Unix / X11的操作系统
  • GUI平台: GTK +
  • 语言:.NET

注意:XAML不是纯粹的开源格式,因为Microsoft控制其使用条款,包括随时更改条款的权利。 Moonlight不能合法地在Windows或Mac上运行。 另外,唯一免除法律诉讼的平台是Novell。 看到这个完整的描述我的意思。 XAML也不是像C#,Managed C ++和CLR这样的ECMA标准。

更新:这个问题已经从“是否有一个开源的WPF替代品?因为原来的问题是错误的,它吸了。这个问题的方向已经改变方向匹配,以配合新的input。在改变之前回应的人。

Qt正在开发QML,看起来很像XAML,除了JSON。 它可以作为针对当前版本构build的预览版,并可在下一个版本的快照中使用。

以下是http://doc.qt.nokia.com/4.7-snapshot/declarative-ui-components-progressbar.html中的一小段代码;

import Qt 4.7 import "content" Rectangle { id: main width: 600; height: 405 color: "#edecec" Flickable { anchors.fill: parent contentHeight: column.height + 20 Column { id: column x: 10; y: 10 spacing: 10 Repeater { model: 25 ProgressBar { property int r: Math.floor(Math.random() * 5000 + 1000) width: main.width - 20 NumberAnimation on value { duration: r; from: 0; to: 100; loops: Animation.Infinite } ColorAnimation on color { duration: r; from: "lightsteelblue"; to: "thistle"; loops: Animation.Infinite } ColorAnimation on secondColor { duration: r; from: "steelblue"; to: "#CD96CD"; loops: Animation.Infinite } } } } } } 
  • Web正在将桌面应用程序的大部分function从现实中解放出来。

    我认为最重要的原因是现在每个人都如此专注于networking。 HTML5将成为networking能够实现的重大飞跃。 使用快速的JavaScript解释器和function强大的浏览器,随着时间的推移,对桌面程序的需求将逐渐减less。 这就是Google所打赌的一匹马,苹果也是如此。

  • 创build好的东西对每个操作系统来说都会有完全不同的实现,所以基本的工具包本身不是很便携的。

    如果你仔细想想,Web是我们在跨平台开发这种基础设施方面唯一真正常见的基础。 从体系结构的angular度来看,WPF与WinForms /直接的WinAPI代码有着令人难以置信的区别。 如果你想要做一些performance良好的事情,那么为每个操作系统调整类似的东西就需要大量不同的pipe道。 (不是说networking应用程序非常快,请注意,但是它们会变得更好)。

  • 外观总是会成为一个问题。

    你用什么外观和感觉? 你是否尝试将界面调整到操作系统界面,使其看起来像“本地化”,或者你是否像Swing那样做了几年前的东西,开发的应用程序与那里的所有应用程序看起来截然不同? (呃,这是一个火车残骸…)如果你select适应每个操作系统的外观和感觉的用户界面,你可能有各种测量和devise问题。

Novell有一个Silverlight的开源实现,对XAML有很大的支持,叫做Moonlight:

http://en.wikipedia.org/wiki/Moonlight_(runtime);

http://www.mono-project.com/Moonlight