正在与同事谈论XAML及其如何成为演示文稿和对象描述语言,因此在IT技术中非常独特和新颖。
XAML是独一无二且新颖的吗?
XAML在Java世界或其他地方是否有任何对应物或前辈?我相信有人告诉我Java Server Faces与WPF类似,那么XAML的含义是什么呢?
我知道Flex中的MXML是相似的,但据我记忆,存在一些主要的结构差异,我记得MXML并没有真正描述对象,而是更纯粹的XML格式。
答案 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,或早先的事件NeXtStep早在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)
XAML
是XML
方言中的对象图构造语言(不是最佳选择)。每个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,便于属性分配。特别是,有以下内容:
ResourceDictionary
,
ObjectDataProvider
,
RelativeSource
,
StaticResource
,
DynamicResource
,
...and more as shown in Microsoft Docs
答案 7 :(得分:-3)
嗯,XAML基本上是.NET的高级标记,因此我认为你可以从XAML到XHTML有很多相似之处 - 两者都是表示技术。
还有很多不同之处(XHTML被浏览器解释为生成图形,而XAML正在编译成MSIL并依赖CLR来制作图形:))