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

Eva*_*ice 66 wpf user-interface xaml open-source declarative-programming

如果我们从HTML/CSS中学到了什么,那么声明性语言(如XML)可以很好地描述用户界面,因为:

  1. 构建可以有效模板化代码的代码预处理器很容易.
  2. 代码是一个定义良好的结构良好(理想情况下)格式,因此很容易解析.
  3. 有效解析或爬网基于XML的源文件的技术已经存在.
  4. UI脚本代码变得更加简单易懂.
  5. 它很简单,设计师可以自己设计界面.
  6. 程序员很擅长创建UI,因此对于设计人员来说应该很容易.

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

桌面UI开发的当前状态在很大程度上是分数化的,否则在图形用户界面设计领域(IE.GTK,XUL,Qt,Winforms,WPF等)中将没有那么多的重复工作.

仅有Python的45个GUI平台

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

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

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

更新:

非常感谢您的信息,请保持信息.以下是我从评论和答案中收集的选项.

GladeXML

  • 编辑:Glade界面设计师
  • OS平台:全部
  • GUI平台:GTK +
  • 语言:C(libglade),C++,C#(Glade#),Python,Ada,Pike,Perl,PHP,Eiffel,Ruby

XRC(XML资源)

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

XUL

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

注意:我不确定XUL是否值得在此列表中提及,因为它不是桌面GUI语言,而是更多的make-webapps-on-the-desktop语言.另外,它需要浏览器才能运行.IE,它是'用于桌面的DHTML'.

CookSwing

XAML(月光)

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

注意:XAML不是纯粹的开源格式,因为Microsoft控制其使用条款,包括随时更改条款的权利.月光不能合法地在Windows或Mac上运行.此外,唯一免于法律诉讼的平台是Novell.请参阅此内容以获取我的意思的完整描述.XAML也不是像C#,托管C++和CLR那样的ECMA标准.

更新:问题已经从"是否有WPF的开源替代品?"因为最初的问题是错误的,而且它很糟糕.这个问题的方向改变了方向以匹配新的输入.我向道歉在改变之前做出回应的人.

Tho*_*mas 14

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

这里有一个来自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 }
               }
           }
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 作为喜欢手工编辑他的XAML的人,我希望WPF也使用JSON.上面的代码对我来说更具可读性. (3认同)

Dav*_*kle 7

  • Web正在将大部分资源从桌面应用程序中剔除.

    我认为最重要的原因是现在每个人都如此专注于网络.HTML5将成为网络可以实现的巨大飞跃.借助快速的JavaScript解释器和功能强大的浏览器,随着时间的推移,对桌面程序的需求将开始减弱.这就是谷歌所追求的马,而苹果也是如此.

  • 创建好的东西会为每个操作系统提供截然不同的实现,因此基础工具包本身不会非常便携.

    如果您考虑一下,Web是我们在跨平台方式开发此类基础架构时唯一真正的基础.WPF与架构视角与WinForms /直接WinAPI代码完全不同.如果你要做一些表现良好的东西,那么为每个操作系统调整类似的东西会为每个操作系统带来很多不同的管道.(并不是说网络应用程序非常快,请注意,但它们会越来越好).

  • 外观总是有点问题.

    你使用谁的外观和感觉?您是否尝试将UI调整为OS chrome以使其看起来像"原生",或者您是否做过像Swing多年前做过的事情并开发看起来与其他所有内容截然不同的应用程序?(呃,这是一次火车残骸......)如果你选择让UI适应每个操作系统的外观,你可能会遇到各种各样的测量和设计问题.

  • 基于浏览器的应用程序的真正基础仍然是基于javascript(只)上帝知道为什么...所以确保你的代码缺乏运算符和其他基本的OO编程技术将运行得更快...但你仍然必须使用'C '喜欢任何真实编码的语法.为什么地球上没有浏览器能够在更好的CLR上获得,比如.NET?或者在语法和编程能力方面使用更多的东西? (3认同)
  • 我认为,如果有的话,我们距离非网络应用程序的消亡还有十年或更长时间。基于网络的应用程序存在一些严重的可用性问题,但希望这种情况最终会改变。 (2认同)
  • 您知道像 Tk 和 wxWidgets 这样的跨平台工具包吗?如果您确实需要为每个平台做一些额外的工作,95% 的 GUI 可以在操作系统之间移植,同时仍然保持本机外观。其实这并不难;只需要稍微注意细节即可。 (2认同)