首页 文章

什么是WPF / XAML的开源替代品? [关闭]

提问于
浏览
66

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

  • 构建可以有效模板化代码的代码预处理器很容易 .

  • 代码是一个定义良好的结构良好(理想情况下)格式,因此很容易解析 .

  • 有效解析或爬网基于XML的源文件的技术已经存在 .

  • UI脚本代码变得更加简单易懂 .

  • 设计师能够自己设计界面非常简单 .

  • 程序员很难创建UI,因此应该让设计师足够轻松 .

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

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

There are 45 GUI platforms for Python alone

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

  • 标准化

  • 平台独立

  • 声明性标记语言

  • 语言不可知

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

更新:

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

GladeXML

  • 编辑:Glade Interface Designer

  • OS平台:全部

  • GUI平台:GTK+

  • 语言:C(libglade),C,C#(Glade#),Python,Ada,Pike,Perl,PHP,Eiffel,Ruby

XRC (XML Resource)

XML based formats that are either not free, not cross-platform, or language specific

XUL

  • 编辑:任何基本的文本编辑器

  • OS平台:运行支持XUL的浏览器的任何操作系统

  • GUI平台:Gecko引擎?

  • 语言:C,Python,Ruby作为插件语言而非基本语言

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

CookSwing

XAML (Moonlight)

  • 编辑:MonoDevelop

  • OS平台:仅限Linux和其他基于Unix / X11的操作系统

  • GUI平台:GTK+

  • 语言:.NET

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

Update: The question has been changed from "Is there an Open source alternative to WPF? because the original question was wrong, and it sucked. The direction of this question has changed direction to match up to align with the new input. My apologies to the people who responded before it changed.

3 回答

  • 3

    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 }
                   }
               }
           }
       }
    }
    
  • 7
    • The Web is taking most of the steam away from desktop apps as it is.

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

    • Creating something good would have radically different implementations for each OS, so the base toolkit itself wouldn't be very portable.

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

    • Look and feel is always going to be somewhat of an issue.

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

  • 14

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

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

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

相关问题