Silverlight
jameszhouhvs
.NET: WinForm > ASP.NET > MVC > Silverlight > WP > Xamarin
展开
-
闭合 (Closure)与隐藏的引用
上一篇blog提到了Delay的Weak Event Pattern, 使用了如下代码:_weakEventListener.OnDetachAction = (weakEventListener) => newNotifyCollectionChanged.CollectionChanged -= weakEventListener.OnEvent;在上面的匿名委托中使用了一个参数,避免使用closure而导致隐藏的引用造成内存泄露。什么是Closur原创 2010-06-03 17:07:00 · 963 阅读 · 0 评论 -
HTML 5来了,那Silverlight的未来呢?
<br />看到IE 9 beta带来的HTML 5震撼,Silverlight的未来在哪儿呢?微软Silverlight团队博客上的这篇blog可以给出目前的答案。文中分析了Silverlight在几个方面还是有其独特的优势。作为不同的技术工具,还有一个需要考量的是开发效率问题,个人感觉Silverlight还是胜出的。原创 2010-10-09 22:47:00 · 1247 阅读 · 0 评论 -
Silverlight Tips from Michael Crump
<br />Michale Crump的Silvelright Tips 系列blog 。<br /> <br /> 从中得到一条tip: 使用NetworkChange 类获得网络连接变化事件,通过NetworkInterface.GetIsNetworkAvailable 检测网络连接状态原创 2010-12-21 11:53:00 · 1003 阅读 · 0 评论 -
Silverlight - Tip: 使用UIElement.AddHandler捕获已被处理的RoutedEvent
<br />问题: 项目中有一个ListBox, 订阅了ListBox的MouseLeftButtonDown事件后,会发现你的事件处理方法根本不会被触发。<br /> <br />原因: 在ListBox中,MouseLeftButtonDown事件是一个RoutedEvent, 并且在routing过程中被标记为handled, 因此ListBox不会再抛出该事件,因此你的事件处理方法也无从相应。<br /> <br />解决: 使用UIElement.AddHandler方法可以订阅已经被ha原创 2010-11-06 22:57:00 · 2498 阅读 · 1 评论 -
Silverlight - Tip: 使用Expression Blend 创建一个扇形
<br />使用Expression Blend 如何制作一个扇形?<br /> <br /><br />图1: 准备一个圆形(100x100), 一个矩形(100x50)<br /> <br /><br />图2: 使用矩形将圆的一半遮挡<br /> <br /><br />图三:选中矩形,按下ctrl, 再选中圆形,并选择菜单Object> Combine > Subtract<br /> <br /><br />图4:这样就得到一个半圆<br /> <br /><br />图5:用一个正方形(50x5原创 2010-11-06 23:33:00 · 1788 阅读 · 1 评论 -
Silverlight - Tip: Clone方法
在Silverlight中,如何实现Clone方法?通过DataContractSerializer的序列化可以实现:http://stackoverflow.com/questions/202699/what-is-the-best-way-to-clone-a-business-object-in-silverlight原创 2010-11-08 00:47:00 · 1046 阅读 · 1 评论 -
WP 7 - 关于"返回"键
<br /> <br />WP7 为保证应用程序的一致性,在程序提交审核时,会检查"当按下返回键,是否返回到前一页面",有人为此遇到了麻烦 ,评论中有一个链接,是 msdn blog上的一篇文章,讲解了如何导航的一些原则原创 2010-11-24 22:24:00 · 1724 阅读 · 1 评论 -
Silverlight - 多个WebBrowser不可重叠
Silverlight OOB应用中可以使用WebBrowser控件作为自定义浏览器,但是当开多个实例,并发生重合时,OOB应用界面会变为白屏 (并无异常)。 论坛里microsoft人的解释: Overlapping webbrowser controls is an unsupported scenario with SL4. Please use HTMLBrush instead.期待后续版本能够支持overlapping!原创 2011-01-24 18:02:00 · 1379 阅读 · 0 评论 -
WCF RIA Service + IIS 6: NotFound 错误
<br />部署一个Silverlight 项目到客户的服务器上,数据访问采用WCF RIA Service,服务器是Win 2003 + IIS 6, 遇到了问题:<br /> <br />Unhandled Error in Silverlight Application Load operation failed for query 'xxxx'. 远程服务器返回了错误: NotFound<br /> <br />根据Saurabh的blog Deploying Application built u原创 2011-01-31 12:18:00 · 3184 阅读 · 0 评论 -
Silverlight - NavigationService & UI Thread
<br />使用NavigationService时,发现在Navigating过程中UI Thread 被blocked住了,即使通过CompositionTarget.Rendering Event处理函数更新UI也没有效果。因为Silverlight (至少目前的4.0版本)还没有独立的Render Thread.<br /> <br />这个问题使得BusyIndicator在navigating中几乎派不上用场。。。例如<br />原创 2011-02-06 18:22:00 · 1249 阅读 · 1 评论 -
WCF RIA Services - Tip: EntitySet的在Silverlight端的缓存问题
<br />问题:Silverlight端通过RIA更新数据并提交后,通过Load方法刷新数据:<br /> <br />private void LoadJobs(int locationID, DateTime datetime)<br /> {<br /> this.LocationID = locationID;<br /> this.Day = datetime.Date;<br /><br /> co原创 2010-08-26 16:50:00 · 1869 阅读 · 0 评论 -
Silverlight - 用户控件与设计时(Design Time)错误
<br />用Blend 或VS 2010的设计视图打开一个用户控件,如果出现错误(最常见的是空引用错误),而debug时程序运行正常,那很可能是由于设计时的一些限制造成控件无法在设计器中正常打开。如何避免呢?通过 System.ComponentModel.DesignerProperties.IsInDesignTool 判断当前状态是否是设计时,在设计时避免构造函数与Loaded事件处理方法中执行那些代码即可,例如: public partial class ProductsView : Us原创 2010-06-22 17:05:00 · 1185 阅读 · 0 评论 -
Silverlight - debug with WinDbg
使用VS调试Silverlight时,有些情况下并不能直观的发现错误,比如xaml中的数据邦定错误,只会出现在Output窗口中。有时Output窗口还会出现类似下面的异常文字:A first chance of exception of type "xxx"... 这时候VS爱莫能助了。那就用WinDbg来调试Silverlight注意:如果使用32为的IE加载Silverlight程序,应使用32位的WinDbg,即使OS是64位的原创 2010-06-04 15:33:00 · 1325 阅读 · 0 评论 -
Dispose模式与Finalize, Dispose方法实现准则
<br />最近一直纠结于一个Silverlight程序的内存泄露问题,顺便复习了一下Dispose模式及Finalize, Dispose方法的实现准则:<br /> Finalize实现准则:<br />The following rules outline the usage guidelines for the Finalize method:Only implement Finalize on objects that require finalization. The原创 2010-06-07 15:10:00 · 2060 阅读 · 0 评论 -
Tip - Silverlight/WPF: 控件继承
<br />很常用的代码重构:多个控件有相同的功能时,一般抽象一个基类,将相同的功能提到基类里,控件继承自这个基类。Silverlight中实现时,遇到了一个小麻烦:设计器自动生成的代码总是报错<br /> <br /> <br />如下是继承自ProtectedView的在子类TipsView的code behind代码:<br /> <br />Partial Public Class TipsView<br /> Inherits ProtectedView<br /> ...<br原创 2010-08-06 16:55:00 · 1298 阅读 · 0 评论 -
Silverlight - 获取Assembly版本信息
<br />CLR 中获取Assembly的版本信息可以用一行代码实现:Assembly.GetExecutingAssembly().GetName().Version<br /><br />同样的代码在Silverlight 的CoreCLR中执行会返回一个异常MethodAccessException<br /><br />可通过如下代码(vb.net)实现:<br /><br /> Public Shared Function GetAppVersion() As String<br原创 2010-08-05 14:23:00 · 2407 阅读 · 0 评论 -
Silverlight - Silverlight for Windows Phone中的Render 线程
Silverlight for Desktop中没有单独的render thread,跟界面相关的操作都运行在一个UI thread中。之所以不像WPF那样设计一个单独的render thread,Ashraf Michail是这样解释的:Since WPF provides a rendering thread, it is probably surprising that Silverlight does not. You may be interested to know why.原创 2010-06-13 16:40:00 · 1869 阅读 · 0 评论 -
Silverlight - GPU加速
Silverlight 3引入了GPU加速的特性,该功能默认为禁用。启用该功能需要:1. 在Silverlight plug-in上设置 或使用代码 Application.Current.Host.Settings.EnableCacheVisualization = True;2.在类型为UIElement的控件上设置CacheMode="BitmapCache" - 所谓GPU加速是基于GPU缓存了一些UI元素,节省了CPU的耗用如何知道哪些控件被缓存?在Silverlight plug-in上原创 2010-06-14 15:10:00 · 6656 阅读 · 5 评论 -
Silverlight - 绑定造成的内存泄露
<br />内存泄露不可怕,可怕的是没有解决办法。发现了一个C1DataGrid造成的内存泄露,然而这个泄露根源来自Silverlight的绑定System.Windows.Data.BindingExpression. 类似的bug报告同样是绑定惹得祸。<br /> <br />原创 2010-06-17 23:55:00 · 1355 阅读 · 0 评论 -
Tip: Silverlight - 可显示多个列的ListBox
ASP.NET中有个Repeater控件,可以设置数据显示的列数。ListBox没有这个属性,可以通过Silverlight Toolkit 中的WrapPanel来实现类似效果 - 只需在ListBox的自定义ItemsPanelTemplate中加入WrapPanel控件,详细步骤在这里原创 2010-08-11 16:37:00 · 3031 阅读 · 2 评论 -
Tip - Silverlight: TextBox的TextChanged事件不更新Data Binding源的解决办法
将TextBox绑定 (two way mode绑定)到ViewModel的一个属性上,Silverlight中的TextBox的TextChanged事件并会触发绑定源的更新,原因是TextBox在失去焦点后才会更新其绑定源。Silverlight 3开始引入的Behavior可以解决这个问题:自定义一个Behavoir,订阅TextChanged事件,并在事件处理方法中强制更新绑定源 - 示例另一个解决方法:继承TextBox,订阅TextChanged事件,在事件处理方法中强制更新绑定源原创 2010-08-12 10:29:00 · 2745 阅读 · 0 评论 -
Tip - WPF 与 Silverlight共享代码
项目做多了,总会有些可复用的东西形成一套自己的类库或helper framework。Silverlight 是WPF的一个子集很多情况下可以复用代码,但也带来一些挑战。Stefan 有一篇blog列举了几种silverlight与wpf项目共享代码的方法。个人喜欢"Add As Link"的方式原创 2011-02-09 17:45:00 · 1277 阅读 · 0 评论 -
Hot Tip - 5个必须的WP7 toolkits
<br />5个很有用的toolkits for windows phone 7, 其中一个是关于数据库的原创 2011-02-14 16:49:00 · 1578 阅读 · 0 评论 -
WP7 - 官方教程
<br />ScottGu在twitter上发了一个链接 http://create.msdn.com/en-us/education/quickstarts原创 2011-02-14 16:02:00 · 1266 阅读 · 0 评论 -
Windows Phone - 使用Sterling数据库几个注意事项
Sterling数据库是一个NoSQL 面向对象的数据库产品,不仅可用于Silverlight for Desktop而且可用于Windows Phone上。最近在一个Windows Phone项目上选择了Sterling作为数据库,主要原因有二:1.支持Linq查询 2.功能全面 使用Sterling进行数据存取操作,可参考其User Guide, 在实际项目遇到了一些问题,几个注意事项原创 2011-06-29 11:27:00 · 4265 阅读 · 0 评论 -
Windows Phone - 使用Sterling数据库实现墓碑化(Tombstone)
如果你的WP应用已经使用了Sterling数据库,那就顺便用Sterling实现墓碑化(Tombtsone)吧。Jeremy Likness的blog详细说明了如何在MVVM架构中使用Sterling实现Tombstone。主要有几点: 1. 定义一个Tombstone数据类。其中用到了Sterling User Guide中提到的Singletone Serializationpub原创 2011-06-29 12:07:00 · 4347 阅读 · 0 评论 -
Windows Azure 项目笔记#1
刚完成自己的第一个Windows Azure + Silverlight的项目的phase 01,回头来看,经历不少曲折,现一一记录,作为备忘。1。异常信息"SetConfigurationSettingPublisher needs to be called before FromConfigurationSetting can be used"问题:上手这个项目时,还没来的及系统学习最新的Windows Azure Training Kit , 需求中用到了Blob Storage Service, 搜原创 2011-05-06 10:52:00 · 3432 阅读 · 0 评论 -
Silverlight - 回车键触发默认按钮
<br />一个常见的需求是,用户在某个TextBox中输入回车键,自动触发界面上的某个按钮。比如登录窗口中,用户输入完密码后按回车,自动触发登录按钮。<br /> <br /><br /> <br />Silverlight (4.0)目前还没有像winform程序那样可通过设置一个属性值来简单实现。<br /> <br />Patrick Cauldweel 提供了一个方案, Kyle Burns 做了些改进,增加了通用性,并解决了前者的一些缺点。<br /> <br />受Kyle启发,我的实现方法是原创 2011-05-06 18:26:00 · 5120 阅读 · 1 评论 -
Tip: Windows Phone 7 - Theme
<br />Windows Phone 上的Theme并不同于Silverlight for Destkop 或者WPF的Theme,而是设备相关的Theme。<br /> <br />Windows Phone 的Theme内置了一些有关颜色、文字等的资源定义,设计界面是应尽量使用这些内置的资源,可以确保应用程序界面的一致性原创 2011-05-09 17:43:00 · 2467 阅读 · 0 评论 -
Tip - RIA Services 分页
服务端自定义分页是常见的应用需求,RIA Services也提供了支持。Kyle的blog给出了使用RIA Services Toolkit SP1 (April 2011)实现的Domain Service分页的方法,配有示例代码可供参考。原创 2011-07-04 21:40:11 · 2594 阅读 · 0 评论 -
RIA Services Tip - 设置实体对象的默认值
RIA Services中的实体类在Insert/Update时,常需要设置默认值,例如datetime类型的一个字段,默认值设置为当前时间,并绑定到界面中的一个datepicker控件。最简单的方案就定义该实体的partial类,并在OnCreated方法中设置默认值Parti原创 2011-09-06 16:28:16 · 1271 阅读 · 0 评论 -
Tip - tools for svg to xaml
Inkscape – vector editor with xaml export feature http://inkscape.org/A tool list:http://blogs.msdn.com/b/mswanson/archive/2006/02/26/wpftoolsandcontrols.aspx an adobe illustrator add-原创 2011-12-05 12:27:34 · 2023 阅读 · 0 评论 -
Tip: Windows Phone - 匿名类型和 MethodAccessException
一个wp7应用引用了Facebook csharp sdk 的dll, 传给FacebookClient的方法中使用了一个匿名类型,结果抛出MethodAccessException使用匿名类型:fb.PostAsync("oauth/access_token",new {原创 2012-02-10 01:21:05 · 1560 阅读 · 0 评论 -
Silverlight, RIA Services, Data Annotation与本地化资源文件共享
在RIA Services中使用Data Annotations可以非常方便的实现数据验证,并且Data Annotation可通过资源文件.resx实现本地化。这里最大的挑战是如何在Silverlight端与WCF端共享资源文件。 如何实现资源文件的共享? 服务端项目文件设置(VB.NET项目)如下: 图1-1: 服务端资源文件 - ValidationStrings.D原创 2011-06-25 02:57:00 · 4120 阅读 · 0 评论 -
Silverlight - RIA Services服务端数据验证与本地化
上一篇blog谈到了RIA Services 使用Data Annotation进行数据验证时的本地化挑战及解决方案。使用Data Annotation可以将验证放在Silverlght端执行。有些数据验证尤其是需要查询数据库的业务逻辑验证,需要在服务端执行,并返回验证信息,此类验证信息的本地化如何实现? 问题难点在于服务端如何得知Silverlight端的Culture信息。得到这个Cu原创 2011-06-26 21:46:00 · 4469 阅读 · 1 评论 -
Tip - Windows Phone 7 客户端数据库
<br />"Mango"将带来SQL Compact 数据库, 在"Mango"发布之前,可选择的第三方客户端数据库方案:<br /> <br />Sqlite - Vici CoolStorage 对其进行了封装,简化了使用。不仅支持ad-hoc查询还支持ORM - 详细<br /> <br />Sterling - 不仅是WP7的客户端数据库方案。同样可用于Silverlight for Desktop程序。Sterling支持Linq,是Object数据库,查询需要基于object key或者索引原创 2011-05-09 18:01:00 · 3275 阅读 · 1 评论 -
Silverlight - 浏览器弹出窗口
<br />项目有一个需求:在Silverlight DataGrid中点击行,弹出一个新的浏览器窗口,换行点击,则刷新弹出窗口的内容<br /> <br />写了一个helper方法,用于弹出浏览器窗口:<br /> <br /> public static void Popup(string url, string target, string targetFeatures) { if (string.IsNullOrEmpty(target))原创 2011-05-11 22:38:00 · 4331 阅读 · 0 评论 -
WCF RIA Services - 超时
<br />今天遇到了一个WCF RIA 超时错误,想把默认的timeout=60s设置的更长些,WCF RIA Services并不像WCF Services可以在config文件中配置参数。<br /> <br />Kyle 写了一个helper方法,可用来配置timeout。<br /> <br />如果使用了Authentication Service,Forms验证的cookie timeout设置也会影响服务调用的超时。原创 2011-05-14 17:37:00 · 4428 阅读 · 0 评论 -
Silverlight + WCF - Windows集成验证
<br />一个基于Silverlight的intranet应用,需要启用Windows集成验证,设置如下:<br /> <br />1. IIS (7.5) - 启用Windows Authentication<br />2. web.config: <br /> <br /><authentication mode="Windows" /><br /> <identity impersonate="true"/><br /> <authorization><br />原创 2011-05-13 15:57:00 · 3180 阅读 · 0 评论 -
Silverlight for WP only - 没有跨域调用限制
<br />Silverlight for Destkop 如有cross-domain调用,则需要被调用方提供一个policy文件。<br /> <br />Silverlight for Windows Phone 去掉了这个限制 - 来自wp论坛的信息<br /> <br />It was explicitly stated in one of the sessions (I'm sorry I can't remember which one) that cross-domain restric原创 2011-05-13 16:57:00 · 3239 阅读 · 0 评论