XAML有多独特?

时间:2009-06-03 08:02:20

标签: wpf silverlight xaml

正在与同事谈论XAML及其如何成为演示文稿和对象描述语言,因此在IT技术中非常独特和新颖。

XAML是独一无二且新颖的吗?

XAML在Java世界或其他地方是否有任何对应物或前辈?我相信有人告诉我Java Server Faces与WPF类似,那么XAML的含义是什么呢?

我知道Flex中的MXML是相似的,但据我记忆,存在一些主要的结构差异,我记得MXML并没有真正描述对象,而是更纯粹的XML格式。

8 个答案:

答案 0 :(得分:13)

这是具有如此压倒性的共同特定用法的一般技术的情况,其与特定用法同义。例如,Javascript的讨论通常假设浏览器上下文和HTML DOM的操作,而没有任何人必须明确说出来。

严格来说,除了XML之外,XAML与XUL或SVG不同。 XUL,SVG有一个用于声明用户界面或图形元素的定义语法,原始XAML没有。

例如,XAML也可用于描述工作流基础中的工作流。

XAML实际上是一种读取XML的方法,用于描述这些类型的类型和属性。例如,可以使用属性或元素来描述类型的属性,只要其名称可以被正确解释即可。 XAML还包括对基本XML语法的扩展,其中属性中的{}可以作为复杂元素的简写。

我以前没遇到过这种事。所有其他基于XML的技术都有一个特定的目的,XAML是XML的第一次使用,我看到它是任何特定命名法的缩写,而只是将XML映射到类型的方法。

答案 1 :(得分:1)

**** XAML,XUL和XHTML重叠****

XAML与其他标准之间最大的重叠在于它支持从HTML / XHTML中提取的概念。 XAML和HTML之间的相似之处很多。当然,重叠HTML不仅限于XAML。另一个着名的XML GUI方言-Mozilla的XUL-也与XHTML重叠。最后,XAML和XUL都在XHTML甚至不包含的地方重叠。 XHTML和XUL可以组合在一个文档中(至少在Mozilla浏览器中)。这种组合是XAML的非Web使用的粗略模拟。实际上,Mozilla的XUL本身就是XAML的一些用途的粗略模拟。

但总而言之,它们实际上只构成对大多数基本HTML内容的支持,并形成在普通Web应用程序中已经常规的小部件。 XUL重叠XHTML少于XAML,因为XUL试图将自己与XHTML分开。它不是试图成为替代品,因为XAML是。

与HTML相比,我喜欢XAML的一件事是增加了HTML的发布派生功能。 XAML使您免于h1标记,代码标记以及HTML中不常使用的许多其他杂项标记。出于实际目的,这些标签只是现代HTML文档中的样式信息。

尽管Web很受欢迎,HTML对于应用程序来说也是一个糟糕的GUI。 XAML和XUL都在很大程度上纠正了这个问题。您可以在XAML中重写Web应用程序,如果只有XAML有更好的CSS支持,它们看起来比HTML原始文件更好。

答案 2 :(得分:1)

来自Apple的Cocoa,或早先的事件Ne​​XtStep早在XAML之前就有类似的东西了。

使用界面构建器创建GUI,该构建器生成所谓的nib(Nextstep Interface Builder)文件,其中包含布局,绑定,操作,出口和序列化对象实例。在过去,这些nib文件以二进制文件格式存储,但现在它也是xml(xib)。

所以XAML并不是第一个不是唯一的。

答案 3 :(得分:1)

阅读与其他表示技术的比较 - Xaml是一种构建和组合.NET对象的方法。这与设计为构建用户界面的其他系统形成鲜明对比。关于Xaml的好处在于它是用于它的技术堆栈的独立 - 它是一种与C#相比,与XHTML不同的目的不可知的语法。就这样,它是独一无二的。

答案 4 :(得分:0)

除了XAML之外,你还拥有Mozilla使用的XUL。另一方面,SVG是W3C推荐的。

答案 5 :(得分:0)

Mozilla最初创建了他们的UI描述语言XUL,以便能够轻松自定义所有产品的用户界面。 如今它是一个可以包含在其他应用程序中的软件包,并且还具有扩展功能。

虽然XUL主要关注UI表示,但它还包含其他结构,如事件和脚本以及数据源。然而据我所知,XAML将这些概念更加紧密地集成到他们的.NET(和附加)框架中。但我不确定这是否足以称之为独特而新颖。

答案 6 :(得分:0)

XAMLXML方言中的对象图构造语言(不是最佳选择)。每个XAML元素都是一个对象实例,相应的属性是所述实例上的属性赋值。由于XML是基于字符串的语言,因此需要将属性值从其字符串类型转换为属性所需的任何类型。这是使用TypeConverter处理器定位并自动使用的XAML后代完成的。 XAML和WPF附带一组与其提供的类型相对应的默认TypeConverters,您可以提供自己的类型。

定义过程的概述如下:

<classG-in-namespace-A
   xmlns="namespace-A"
   xmlns:alias-B="namespace-B"
   xmlns:alias-C="clr-namespace:namespace-C;assembly=assembly-of-namespace-C"
   propertyG1="simple text value stipulation"
   propertyG2="{alias-C:classH-in-namespace-C propertyC1=valueC1,..}"
   >
   <classG-in-namespace-A.propertyG2>
        <alias-B:class-I-in-namespace-B propertyB1=valueB1,...>
           class-I-in-namespace-B's content property value assignment
        </alias-B:class-I-in-namespace-B>
   </classG-in-namespace-A.propertyG2>
   classG-in-namespace-A's content property value assignment
</classG-in-namespace-A>

XAML和WPF提供的实用程序类型超出TypeConverters,便于属性分配。特别是,有以下内容: ResourceDictionaryObjectDataProviderRelativeSourceStaticResourceDynamicResource...and more as shown in Microsoft Docs

答案 7 :(得分:-3)

嗯,XAML基本上是.NET的高级标记,因此我认为你可以从XAML到XHTML有很多相似之处 - 两者都是表示技术。

还有很多不同之处(XHTML被浏览器解释为生成图形,而XAML正在编译成MSIL并依赖CLR来制作图形:))