由于名称的关系,WPF与WPF/E(Silverlight)一直被认为是类似的东西.
其实两者除了呈现UI的部分使用的是共通语言XAML之外,
两者在本质上有很大的不同.
甚至,XAML对WPF与Silverlight有不同的意义,也不能算是两者间"共通的语言"
XAML对WPF来说,是一种把.NET程式语言改用XML来描述的方式.
换句话说,XAML用在WPF上,像是另外一种程式语言.与C#,VB,IronPython相似.
所以XAML能做的,C#,VB一样都可以做到.但是反过来,C#,VB能做的,
XAML不一定能做到,因为XAML是为了配合开发工具,特别设计出来的一种语言,
本身有他的局限性,所以还是得配合正规的程式语言,才能完成一个真正有用的程式.
但是以目前XAML所具备的能力,不靠C#,VB而做到平常简单Flash可以做到的,应该是没啥问题.
因此,Application=Code+Markup的作者Petzold才会把这本书的结构写成先用以C#来写WPF程式,后半部才介绍XAML.避免大家误解WPF=XAML.
XAML还可以用在WF上,所以并不局限于WPF.如果用了XAML,以为这就是WPF的全部,就大错特错啰!
然而,XAML对Silverlight来说,本质比较贴近SVG.
XAML用来描述构成画面的结构树,然后配合Javascript去操作这颗表示UI的树,以达到互动的效果.所以对Silverlight来说,XAML像是用来扩充HTML/CSS原本不足的一组Tag.就像Firefox之中,一样可以用Javascript去操作SVG所描述的画面,借以达成多媒体效果.
[ 本帖最后由 langmuir 于 2007-8-1 22:52 编辑 ]