日期:2014-05-17  浏览次数:21026 次

WPF,XAML浏览器应用程序和Silverlight
在WPF中,XAML浏览器应用程序(.xbap)和Silverlight比起来,哪个好些?

------解决方案--------------------
体积上Silverlight是最小的,即使没有安装.NET,客户也只要下载几M的安装程序就可以加载Silverlight了。
功能上WPF是最好的,没有本地安全性限制(除非登录用户本身无权限)。Silverlight的限制非常多,各种禁止的操作导致程序员对其非常反感,甚至连Mono都放弃对Silverlight进行Linux下的提供支持了。但这不意味着Silverlight淘汰了,很多偏见的说法直接说微软放弃Silverlight了。从微软的一贯作风来看,是故意这样的,Silverlight有着和Windows8一样的安全限制。
不过Silverlight在Windows8下面的BUG还未解决,已经遇到的是Link按钮在切换标签页下面切换异常。由于开发机非Windows8,无法对其调试,甚是头疼。
------解决方案--------------------
XBAP:
    1. XBAP APP拥有整个CLR和整个.NET Framework可以使用,但是Silverlight只能使用Silverlight CLR和轻量级的 .NET Framework/WPF
    2.XBAP权限方面有Full Trust和Partial Trust,而Silverlight 的权限被严格限制

Silverlight 
    1. 可以跨平台运行(Windows/Mac使用official Microsoft implementation ,Linux使用Moonlight)
    2. Silverlight可以运行在任意游览器,而XBAP只能运行在IE上

------解决方案--------------------
引用:
 
不过Silverlight在Windows8下面的BUG还未解决,已经遇到的是Link按钮在切换标签页下面切换异常。由于开发机非Windows8,无法对其调试,甚是头疼。

这个可否提供Repro的简单代码? 我可以在WIN8上试一下
如果可重现,可直接反馈给MS进行修改
------解决方案--------------------
原始代码不方便提供,需要重新改写才行,这需要时间。
具体问题描述如下:
页面中放置TabControl,至少有2个TabItem,第一个TabItem里面放一个DataGrid,有一个列是自定义模板列,放置了一个HyperlinkButton,在其Click事件里面执行2个动作,一、切换到第二个TabItem上显示,二、访问网络,加载所需数据到第二个TabItem里面进行绑定。
现象一:加载表格数据时,对应的SizeChange事件无法触发,我在SizeChange事件中动态计算每页的行数,实现分页过程,结果导致DataGrid内部无任何数据,重新切换浏览器窗口大小就有了(仅Windows8如此)。
现象二:加载图片数据到Image控件时,直接整个TabItem里面的所有控件全部看不到,切换回来连原先正常的第一个TabItem里面都空白了,浏览器控制台无任何异常提示(如果出错,控制台必定会显示异常详细信息的).
------解决方案--------------------
引用:
这个可否提供Repro的简单代码? 我可以在WIN8上试一下
如果可重现,可直接反馈给MS进行修改

问题应该不难重现,基本上是TabControl放一个DataGrid,自定义模板列,放置了一个HyperlinkButton,添加Click事件,这个Click事件里面执行的代码,不管是什么都会有问题,不能正常执行,同样的代码放在外面,添加一个Button,就可以正常执行。而且还不会发生任何异常,说明执行过程没问题,只是没有起到效果。