代码改变世界

随笔分类 -  Silverlight

Silverlight查询大数据出错?使用服务器端分页控件DomainDataSource

2012-08-21 16:53 by slmk, 1448 阅读, 收藏, 编辑
摘要: DomainDataSource控件是很强大的,排序/分组/分页等都能轻松搞定。控件的使用可以参考MSDN的文档,已经很详细了。值得注意的是:其分页功能是“服务器段分页”,而不是一次性将数据下载到客户端去分页。我做过试验,客户端分页如果数据超过3500行,直接报错(使用的DataGrid和DataPager显示数据,WCF RIA Service传递数据)。而DomainDataSource控件采用服务器分页就没有此问题,并且分页是自动的,不需要自己手动Skip,Take了。为了验证DomainDataSource控件是如何做到服务器端分页的,我们可以使用Sql Server Profiler 阅读全文

Silverlight打印解决方案2.1正式发布(支持打印预览、页面设置(横向纵向,页边距,纸张大小、字体大小)、自动分页和多页连续打印)

2012-07-18 17:44 by slmk, 4208 阅读, 收藏, 编辑
摘要: 此次版本更新,主要是针对用户的反馈意见进行的。本着尽量多写Demo,少写文档的原则。毕竟文档千言,不如代码一行,关键是我语言表达能力也不行啊!:) 主要实现以下新功能: 1、不弹出打印对话框(需要提升的权限,只支持Silverlight 5): Silverlight 5支持使用默认打印机直接打印, 阅读全文

Silverlight如何调用淘宝API

2012-06-19 13:57 by slmk, 808 阅读, 收藏, 编辑
摘要: 淘宝开放平台TOP并没有提供SL版本的SDK,其实是没有必要,也是不可能的。其原因有二:1、Siverlight默认不允许跨域访问,需要在被访问网站下面放置策略文件,Taobao不可能为我们放置一个策略文件的。2、你的taobao应用程序的appkey,appsecret,甚至是sessionkey都暴露在Silverlight前端了,这也太傻了吧!存在很大的安全隐患!SL直接调用Taobao Api是不可能的,怎么办呢? 其实,我们只要将调用taobao的代码放到我们的服务器端就可以了,服务器获取到数据后再传到前端去。而SL和Web服务器通讯最好的方法莫过于WCF RIA Servic... 阅读全文

打开silverlight项目之前,您需要安装最新的Silverlight Developer运行时

2012-05-30 11:06 by slmk, 2152 阅读, 收藏, 编辑
摘要: 今天打开Silverlight打印解决方案2.0项目时,提示:“打开silverlight项目之前,您需要安装最新的Silverlight Developer运行时”,并附带一个更新链接,而这个链接却打不开。怎么回事?难道Silverlight更新了,打开Silverlight,果然:是自动更新的哦。由于运行时改变了,所以要重新安装Silverlight Developer。下载地址:http://www.microsoft.com/downloads/zh-cn/details.aspx?FamilyID=fb1258e2-f3df-4a3d-b809-abec619a0c63更新了哪些内容 阅读全文

Silverlight打印解决方案2.0之如何自定义表体

2012-05-29 21:59 by slmk, 830 阅读, 收藏, 编辑
摘要: 通常我们的表体都是二维表格形式的,正如Silverlight打印解决方案2.0 Demo中演示的那样绑定就好了。那如果我要自定义表体怎么办呢?大体代码是这样的:1、Xaml:<local:Reportx:Name="Report3"Title="自定义表体"><local:Report.PageHeaderTemplate><DataTemplate><TextBlockText="{BindingTitle}"FontSize="16"FontWeight="B 阅读全文

[Silverlight]实战WCF RIA gzip压缩

2012-04-03 16:21 by slmk, 1663 阅读, 收藏, 编辑
摘要: 本文利用IIS7的“动态内容压缩”,实现WCF RIA输出的内容压缩后发送到客户端浏览器。测试环境:Win7+IIS7.5;网络监视工具:Fiddler2 (用Firebug也可)。测试代码:web端:[EnableClientAccess()] public class StringService : DomainService { public string GetString() { return File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirecto... 阅读全文

通过实例代码理解WPF的Dispatcher

2012-03-27 10:07 by slmk, 2116 阅读, 收藏, 编辑
摘要: Dispatcher提供用于管理线程工作项队列的服务。可以理解为消息队列,只是其中保存的是委托,而不是简单的windows消息。Dispatcher通常用来使我们的程序界面对于用户的操作响应更加迅速,通常用来更新UI,例如一个进度条。例如一个耗时操作,我们不想让使用者等得太着急,于是我们想显示一个进度条。最直接的方法可能是在一个循环中更新,如以下这个错误的代码: ProgressBar1.Minimum = 0; ProgressBar1.Maximum = short.MaxValue; //模拟一个耗时计算 ProgressBar1.V... 阅读全文

Silverlight打印解决方案2.0已发布

2012-03-24 14:54 by slmk, 2381 阅读, 收藏, 编辑
摘要: silverlight打印解决方案有新版本发布了:Silverlight打印解决方案2.1正式发布Silverlight打印解决方案2.0的新特性1、页头、页体和页脚的模板自定义,可以根据用户的需要自定义。如图:销售订单一览表、总订单数和总计金额可以通过Xaml定义并支持数据绑定2、打印预览支持连续滚动:3、预览支持缩放:用户早就提出过此要求,很抱歉2.0才支持。4、支持Silverlight5的矢量打印前提是您的打印机支持矢量打印并且已安装矢量打印驱动。5、支持多层表头:有了2.0,你可以制作复杂报表了。6、改进的自动分页算法,相对于1.1的分页算法更简洁和准确。7、支持换行通过设置报表的T 阅读全文

Silverlight创建桌面客户端应用程序独立安装包(同时打包Silverlight运行时和Xap应用程序文件)

2012-03-24 10:05 by slmk, 2609 阅读, 收藏, 编辑
摘要: 有时我们需要创建客户端应用或者是不需要联网的小程序,例如一个桌面小游戏,你想发给你的好友。使用Winform或者wpf,用户需要安装30多M的.net框架。然而我们使用Silverlight这个精简框架作为.net运行时,打包后的应用程序就小的多。拿我打包的这个汉诺塔小游戏来说,全部打包后只有6M多,其中xap文件只有32K,其他是Silverlight 5安装程序。这样,用户只需双击我们的打包后的安装程序,就会自动创建程序的桌面和开始菜单的快捷方式,用户感觉像是在使用winform应用程序。 打包的汉诺塔源程序来自Aimeast的【Silverlight】汉诺塔游戏,带AI 一文制作步骤:. 阅读全文

Web开发要做好浏览器兼容谈何容易?

2012-02-29 11:33 by slmk, 3410 阅读, 收藏, 编辑
摘要: 浏览器兼容虽说是web开发的基本要求,但是要做到完全兼容各种浏览器谈何容易?对于开发和设计都由程序员兼着的小公司的信息部门来说,更是雪上加霜。就连京东商城,包括百度做出了的东西,也都很难保证主流浏览器的完全兼容。其中最典型的是京东,经常性地用Firefox打不开,看来是只兼容IE族啊。一次在京东上给孩子买奶粉的时候,还以为京东被黑了,可是换了IE浏览器一切正常。我给京东写过邮件反映过此问题,现在情况好多了,但还是偶尔会遇见火狐打不开的情况。而本以为百度在兼容性方面做得天衣无缝,可是今天在上传文档到百度文库的时候,出现了Firefox不能上传而IE可以的情况。看来要做好兼容性谈何容易?我认为原因 阅读全文

企业内部使用Silverlight5浏览器内受信任的应用程序

2012-02-27 12:22 by slmk, 3584 阅读, 收藏, 编辑
摘要: silverlight 5的一个有趣的新特性是:可以在浏览器内完全受信任运行。这对于企业内部应用可谓重大的改进,可以访问本地COM,而且是在浏览器内。至少可以访问本地文件系统这一点就方便很多,很多需要C/S结构才能完成的事借助SL5也能实现。我一直认为SL是开发企业应用的利器,JS+HTML方式的前端难与之相比。1、silverlight应用程序项目属性中以下选项搭钩:如果你在调试时运行会发现,有权限在本地创建文件,这是因为你用"localhost"访问的原因,不要以为大功告成了!2、修改注册表:Key path for 32-bit computers: HKEY_LOC 阅读全文

Silverlight WCF RIA Service也遭遇了一次编码问题

2012-01-14 17:55 by slmk, 372 阅读, 收藏, 编辑
摘要: 这是一次血的教训: 足足花了我两个小时来调试这个问题,Silverlight应用在开发机器正常,发布到服务器后就出现了问题。其实有一个问题浪费了我大部分时间,那就是:Silverlight的Xap缓存问题。刚开始没有注意,以为刷新了就会下载到新的xap文件到浏览器,可是修改了多次程序后,还提示同样的错误,于是删除浏览器临时文件,并通过MessageBox框定位到问题所在:一个DomainService的查询操作总是返回null,这个操作需要一个参数,可这个参数通常是中文!这才恍若大悟,这不是我经常犯的编码问题吗?马上配置web.config:<globalization requestE 阅读全文

Silverlight5 无法切换输入法,无法输入中文的原因及解决初探

2012-01-11 17:15 by slmk, 2267 阅读, 收藏, 编辑
摘要: 问题源于前不久做的SL应用,开发是在SL4下开发的,由于完成后SL5也出来了,据说性能有较大提高,就把客户端升级到了SL5。经过简单的测试后,没发现什么异常。可是过了两天,客户打电话说:中文不能输入了,输入法切换后还是英文,或根本就切换不了。可开发机器上一切正常啊!程序用了自己写的控件,其中用到了Popup控件,Popup中的ListBox控件作为一个下拉列表供用户选择。 在win7上测试发现,当选中一项,Popup隐藏后,将焦点移到下一个TextBox控件,原来好好的输入法变为了这样:XP和2003下测试,只能发现语言栏变短了!并且不管用什么输入法都一样不能输入中文!Google搜索后发现, 阅读全文

[Silverlight]用代码设置数据绑定

2011-12-06 11:07 by slmk, 389 阅读, 收藏, 编辑
摘要: 数据绑带从Winform开始就有了,数据绑定在用户界面和后台数据之间建立了连接,减少了很多编码。Silverlight的数据绑定一般是在XAML中写的,而有时我们需要在代码中动态设置。代码也很简单,例如我们要将对象fl的属性Name绑定到TreeViewItem的Tag属性上 TreeViewItem tvi=new TreeViewItem(); tvi.DataContext = fl; Binding binding = new Binding("Name") { Mode = BindingMode.TwoWay... 阅读全文

引起Silverlight白屏的原因

2011-11-20 15:57 by slmk, 2133 阅读, 收藏, 编辑
摘要: 白屏的原因大部分是因为"未捕获的异常"造成的。如果你建立的是“Silverlight 应用程序”而不是"导航应用程序“或”Bussiness应用程序“,那么恭喜你!你会经常遭遇白屏。因为调试时,未捕获的异常不会引起调试中断在出错的位置,而是引发应用程序的UnhandledException事件!然而“Silverlight 应用程序”模板的事件处理程序是这样的: private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { 阅读全文

[Silverlight]Wcf Ria Services权限控制的实现

2011-11-14 17:28 by slmk, 758 阅读, 收藏, 编辑
摘要: WCF RIA Services使用Domain Service域服务为客户端提供数据访问等服务,如何控制这些数据服务的安全访问呢?例如有些服务只有权限高的用户可以访问,有些服务是可以匿名访问的,这又是如何实现的呢?其实实现原理有些类似于Asp.net MVC的Action Filter,都使用Attribute标记来区分安全等级。看一个简单的Domain Service:[EnableClientAccess]publicclassMyService:DomainService{ [RequiresAuthentication]publicDataModelGetDataModel(){.. 阅读全文

多个Silverlight应用程序如何共享一个DomainService

2011-11-14 17:02 by slmk, 1320 阅读, 收藏, 编辑
摘要: WCF RIA Services使用DomainService提供数据访问等服务,如果在Silverlight中使用,只要设置了WCF RIA连接,就能自动生成数据访问的客户端代理类,这为我们开发提供了方便。我们通常是建立一个Silverlight Bussiness Application的项目,其中包含一个Silverlight项目作为客户端,一个Web结尾的项目承载我们的Domain Service服务。刚开始我还受用这种模式,数据访问那么的自然,没有多余的WCF请求代码。然而当我做第二个应用程序时,遇到了麻烦,我该如何重用第一个应用程序中已经写好的Domain Service呢?我首先 阅读全文

使用IIS Express 7.5实现支持Https的Silverlight登录

2011-11-11 18:10 by slmk, 1392 阅读, 收藏, 编辑
摘要: 只有实现了https的登录才算安全的登录,总不能明文传送用户名和密码吧?不过博客园的登录好像还是http的:-),也没关系了博客,不是网上购物,安全性要求相当低。有了IIS Express 7.5我们在开发时就能体验https,因为其包含了一个开发用的自签证书,可供我们调试用。说到证书,今天遇到了一个关于证书路径的问题,好半天才使用户的机器信任本该信任的证书,注意的就是:证书的完整路径都要导入到受信任的证书颁发机构中。 今天的文章还是证书倒的鬼。言归正传,IIS Express 7.5的Https功能可以参考这里。看图:工程属性中设置SSL你会发现IIS Express帮定了两个网址新建一个S 阅读全文

[Silverlight]关于对Canvas.ZIndex的认识误区

2011-11-07 09:13 by slmk, 2546 阅读, 收藏, 编辑
摘要: 对Canvas.ZIndex,MSDN的解释是:获取或设置 Canvas 中对象的 z 顺序呈现行为。并附有以下示例代码:<Grid x:Name="LayoutRoot" Background="White"> <Canvas> <Ellipse Canvas.ZIndex="3" Canvas.Left="5" Canvas.Top="5" Height="200" Width="200" Stroke="Bla 阅读全文

Silverlight的DataGrid实现列标题和单元格换行

2011-10-31 14:40 by slmk, 2419 阅读, 收藏, 编辑
摘要: silverlight的DataGrid控件默认就是单行文本到头,如果设置了列的长度,文本会被截断不显示。如何实现长文本自动换行?我们首先想到的是利用Style,因为换行只是外观的改变,不是行为的改变。1、标题换行:<Style TargetType="prim:DataGridColumnHeader" x:Key="aHeaderStyle"> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> < 阅读全文