总而言之,众所周知,
a)Silverlight预计将由浏览器托管,并在隔离的沙箱中运行,因此不会出现任何安全问题
除隔离的存储区域外,Silverlight无法直接访问文件系统
没有直接的方法可以打开像Silverlight中的文件保存这样的常见对话框(虽然支持Opendialog框).
b)Silverlight无法访问打印机等本地资源
什么是超越沙箱的方式,让我可以在本地托管Silverlight应用程序,阅读文件,并保存他们回来,如果需要,将数据交给打印机,等等..
更新:
完整的WPF对我来说不是一个选择吗?不,我也有兴趣在一个跨平台的解决方案 - 例如,你可以在单Web浏览器控件承载Silverlight中,这样就可以在任何地方运行它.
我们的想法是重新使用我建立了我的桌面网页,以及相同的应用程序,通过在某些领域提供了关注点分离 - 像持久性,资源访问等情景:
1-某种小工具容器,可以访问本地资源.2 - 基于Silver Light的桌面媒体应用程序
更新:
我刚刚做了一个POC,让我能够访问打印机并在本地保存文件,当然也可以通过我托管Silverlight应用程序的shell.如果你不想,你可以在我的博客中查看这里的帖子
我能想到的两种方式是,
创建一个"壳牌"
使用Silverlight在Winforms桌面应用程序中使用Web浏览器控件托管HTML页面,并使用HTML DOM进行来回通信.然后我可以请求托管shell执行打印等操作.详情请见此处
Mono还有一个Web浏览器控件 - 基于FireFox XULRunner而不是IE - 尚未成功加载Silverlight.另一种选择可能是使用Webkit.
嵌入Web服务器
在Host应用程序中嵌入轻量级Web服务器,并处理执行此类操作的请求.您可以在HTTP之上定义协议,例如保存到本地文件夹,发送数据以进行打印等.