69

如果我们从 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 似乎是朝着正确方向迈出的一大步。

更新:

非常感谢您提供的信息,请继续关注。以下是我从评论和答案中收集的选项。

格莱德XML

  • 编辑:Glade 界面设计师
  • 操作系统平台:全部
  • 图形界面平台:GTK+
  • 语言:C (libglade)、C++、C# (Glade#)、Python、Ada、Pike、Perl、PHP、Eiffel、Ruby

XRC(XML 资源)

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

许尔

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

注意:我不确定 XUL 是否值得在此列表中提及,因为它与其说是一种桌面 GUI 语言,不如说是一种 make-webapps-run-on-the-desktop 语言。另外,它需要浏览器才能运行。IE,它是“桌面的 DHTML”。

厨师摇摆

XAML(月光)

  • 编辑:MonoDevelop
  • 操作系统平台:仅限 Linux 和其他基于 Unix/X11 的操作系统
  • 图形用户界面平台:GTK+
  • 语言:.NET

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

更新:问题已从“是否有 WPF 的开源替代方案?因为原始问题是错误的,而且很糟糕。这个问题的方向已经改变方向以匹配新的输入。我很抱歉在它改变之前做出回应的人。

4

3 回答 3

14

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

这是来自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 }
               }
           }
       }
   }
}
于 2010-06-11T15:02:39.487 回答
7
  • Web 正在从桌面应用程序中抽走大部分精力。

    我认为最大的原因是现在每个人都非常关注网络。HTML5 将成为网络功能的巨大飞跃。随着快速的 JavaScript 解释器和功能强大的浏览器,对桌面程序的需求将随着时间的推移而开始减弱。这就是谷歌所押注的马,在较小程度上,苹果也是如此。

  • 为每个操作系统创建好的东西会有完全不同的实现,因此基本工具包本身不会很便携。

    如果您考虑一下,Web 是我们以跨平台方式开发此类基础设施的唯一真正通用的基础。从体系结构的角度来看,WPF 与 WinForms/直接 WinAPI 代码截然不同。如果您要祈祷使某些东西表现良好,那么将类似的东西适应每个操作系统将需要为每个操作系统进行大量非常不同的管道。(请注意,并不是说网络应用程序非常快,但它们正在变得更好)。

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

    你使用谁的外观和感觉?您是否尝试使 UI 适应 OS chrome 以使其看起来“原生”,或者您是否像多年前的 Swing 所做的那样开发看起来与现有的一切截然不同的应用程序?(呃,那是火车残骸……)如果您选择使 UI 适应每个操作系统的外观和感觉,您可能会遇到各种测量和设计问题。

于 2010-06-03T02:20:10.367 回答
3

Novell 有一个 Silverlight 的开源实现,对 XAML 有很好的支持,称为 Moonlight:

http://en.wikipedia.org/wiki/Moonlight_(运行时)

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

于 2010-06-03T03:46:38.380 回答