随笔分类 - Silverlight
主要是平时学习Silverlight遇到的一些记录
摘要:去年下半年去了一趟台湾后,似乎就再也没有写过博客,尽管在公司内部论坛上坚持发表一些文章,已经大多数与技术本身无关了. 刚进公司做Silverlight时,曾写了一篇 Silverlight中本地化的实现,一晃快三年过去我仍然做着Silverlight的工作,也见证这几年Silverlight在开发者或是社区的影响力由鼎盛到日渐式微,从大学学习Silverlight到目前,已经过了5年,比起国内大部分Silverlighter爱好者,开发者,我似乎更愿意去表达一种情怀,尽管我的工作本身还需要懂的一些WinForm,ASP.NET,WPF,WCF这些技术,我想我的程序员职业生涯是不会离开.NE..
阅读全文
摘要:Silverlight开发中可能会遇到各种内存泄露的情形,由于CLR本身给我们提供了垃圾回收功能,所以在一般的情况下,我们也可能不是太重视内存是否得到有效的释放, 本文试图还原自己遇到一个场景,给各位做Silverlight的朋友们一个参考. 那么我处理的情形是在Silverlight自带的导航框架中遇到的,我将ViewModel绑定到对应的View中,唯一的区别是我的Viewmodel中包含了一个DispatcherTimer. 看我的Viewmodel的代码: public class AboutViewModel : ViewModelBase,IDisposa...
阅读全文
摘要:在Silverlight与WCF进行通信的过程中,数据安全就成为了一个非常关键的因素,如果不作任何限制,那么数据被抓包篡改等情况都是对系统的潜在威胁.本文主要介绍通过SSL配置WCF进行通信. 对于WCF的安全,主要分为传输/消息安全,在阅读本文时,你需要了解相关的知识,本文不做此部分介绍. 接下来,我将一步一步详细解说如何让客户端成功引用SSL配置的WCF站点 第1步:创建寄宿的网站 ...
阅读全文
摘要:在Silverlight/WPF的BindingExpression中,我们可以对一个Bind定义UpdateSourceTrigger属性,但是在Silverlight里只提供了显式更新和默认方式(即失去焦点时触发), 所以如果我们需要TextBox在输入时即进行数据源的更新,我们需要进一步处理一下,那么如果你熟悉这个功能的话,你在网上能很快搜索出来类似下面的Code: TextBox txt = sender as TextBox; var bindingExpression = txt.GetBindingExpression(TextBox.TextProperty); if ...
阅读全文
摘要:在XAML的开发中,能够熟练的使用Grid布局是一个基本要求,本篇文章尝试解决其中一个比较显而易见的问题。 在Grid的布局的页面中,相信下面的类似代码一定非常熟悉: <StackPanel Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2"> 虽然在Blend下可以很方便的修改布局参数,但是实际上我们很多时候都是直接在VS里面编辑XAML,所以本文的思路是用附加属性来解决这个问题: 首先定义一个Cell属性: public static string GetCell(Depe
阅读全文
摘要:SvFx是一套商用的Silverlight控件包,尽管名气赶不上Telerik这些控件商,但是我推荐它的目的在于它本身可以给做Silverlight的朋友一些思路和设计上的灵感,它主要的几个控件,比如SlideShow,FlashLight都是比较常用的功能。 演示地址:SvFx Demos 关于动画方面,我再推荐个动画效果非常优秀的Silverlight的网站:completit 国内关于Silverlight用户体验方面的文章不是特别的多,大部分是对某个功能点的介绍,目前我印象比较深的是中国人寿Silvelight项目的两篇文章,以及烤地瓜的博客都非常注重用户体验。 我并非一个...
阅读全文
摘要:本篇主要文章涉及到几个技术点: 1.RESTful Service 2.Caliburn.Micro 3.Reactive Extension 4.MEF 5.Json.net 限于篇幅,本文不会对每个框架的来龙去脉讲的很清楚,也无法对每一个技术点详细介绍,文章末尾有源码供参考。 Silverlight与WCF可以通过多种协议方式进行交互,比如basichttp,net.tcp,在某些情形下,我们可能对数据的要求不需像SOAP格式,所以采用RESTFul Service的考量在于数据传输非常的干净. 下面2步解释如何创建一个RESTFul Service: 建立一个Sil...
阅读全文
摘要:去年曾经写过几篇关于Silverlight的一些小技巧,主要是对工作中遇到的问题的一个解决思路,本篇整理出其中经常遇到的几个问题 1.ColorExtension 相信习惯用XAML的程序员经常会被这个问题苦恼着,明明Xaml里面可以智能提示的Color,用C#居然没有.见下图: 那怎么解决这个呢,一般情况下我都是用取色工具把颜色取出来,然后转化成Color,Blend自带的取色...
阅读全文
摘要:Silverlight中使用MVVM(1)--基础 Silverlight中使用MVVM(2)—提高 Silverlight中使用MVVM(3)—进阶 Silverlight中使用MVVM(4)—演练 Silverlight中使用MVVM(5)-Command II Silverlight中使用MVVM(6):AutoComplteBox的异步过滤 Silverlight中使用MVVM(7):DataGrid中触发Button的Click事件 Silverlight中使用MVVM(8)-使用AttachedProperty关闭ChildWindow 在实际开发程序的过程中,不乏处...
阅读全文
摘要:Silverlight企业级开发中,项目中会出现大量的Style资源文件,如何将这些XAML文件打包成dll,以满足动态改变Theme的需求呢?通过参考Toolkit的源码中有关Theme.dll 的实现方式,本文将详细叙述这一过程: 1.创建一个Silverlight Class Library,命名为BlackColorTheme. 2.创建需要的ResourceDictionary 这里创建了ButtonStyle.xaml,HyperlinkButton.xaml2个文件,Build Action设置为Resource 以ButtonStyle为例,我们设置点简单的样...
阅读全文
摘要:本篇主要分享关于Slider应用上的一点问题, 相信你看完演示后,已经知道本文的意图了. 在实际开发中,我们需要Slider根据我们设置的SmallChange进行ValueChange.SDK的Slider即使设置了SmallChange属性, 但是在拖动Thumb时,仍会显示实际的Value.显然不能够满足我们的需求,这就需要我们手动去修改Slider. 我相信最初使用Slider的人会和我遇到一样的问题,希望本篇的做法能提供给各位一些思路. 我的做法重写OnValueChanged事件,直接贴出改造后的代码: public class RoundSlider : Sl...
阅读全文
摘要:Silverlight中使用MVVM(1)--基础 Silverlight中使用MVVM(2)—提高 Silverlight中使用MVVM(3)—进阶 Silverlight中使用MVVM(4)—演练 Silverlight中使用MVVM(5)-Command II Silverlight中使用MVVM(6):AutoComplteBox的异步过滤 毕业后忽然觉得什么地方都要用钱, 这半年除了工作,几乎没有什么时间静下心来分享一些东西了,生活压力山大啊. 这篇文章分享MVVM中常见的一个问题,相信在实际运用MVVM的朋友一定会遇到这种问题. <sdk:DataGri...
阅读全文
摘要:最近一段时间,被各种事情困扰,博客一直没有更新,今天分享一个简单的技巧. 加载页面时,需要Focus某个TextBox,在CodeBehind下这很容易实现,如果采用MVVM模式时,这是与ViewModel无关的,但是可以用Behavior实现. 这里需要用到TargetedTriggerAction<T>,这个T需要是一个Control,因为这样才可以Focus: public class FocusOnEvent : TargetedTriggerAction<Control> { protected override void Invoke(object...
阅读全文
摘要:在Silverlight中,当用户退出程序时,我们一般需要在Exit事件中保存用户的相关资料,本文主要讲述在OOB模式下的解决方案. 按照一般的思路,在程序退出时,我们会在Exit事件中与服务器交互,如下代码: private void Application_Exit(object sender, EventArgs e) { TestClient proxy=new TestClient(); proxy.SaveWorkCompleted += (obj,arg) => { }; proxy.SaveWorkAsync(); } 但是,调试下来你会发现,根本没有...
阅读全文
摘要:最近需要用Silverlight实现一个类似Web的悬浮菜单,在网上没有找到需要的资源,本来准备自己实现一个,恰巧看到中国人寿的Silverlight平台上的菜单与自已的想法大致吻合,于是决定参考其做法. 因为中国人寿的Silverlight项目采用了动态加载的方式,在html页面无法直接找到xap地址,要先用Spy找到它的xap包, 通过视觉树的方式,找到VerticalMenu,这样就可以快速定位到该控件所使用的dll了 反编译出dll后,分析一下代码,发现和自己预想采用TranslateTransform的思路是一致的, 具体做法通过MouseEnter/MouseLeave...
阅读全文
摘要:年初曾写过一篇如何用Blend制作简单的加载动画,微软提供Blend这个套件,确实大大方便了程序员处理一些的简单的美工设计问题,这篇文章将简要的描述 如何使用Blend制作一个Circular Loader的简要步骤,没有太深奥的编程知识,只要对Blend有所熟悉,就能按照下面的流程简单的进行处理. 首先看看我们制作的效果图: 这张效果图是不是做Silverlight的朋友很熟悉呢?接下来详细讲解制作流程 1.创建一个UserControl,命名为userControl,为了能自适应浏览器,将根元素Grid替换为ViewBox. 2.添加一个椭圆到舞台中,将其转换为PathListBox 3.
阅读全文
摘要:大约一个月没写新的博文,最近一阵子确实很忙,刚过去的7月,或许是人生中又一个转折点,让我对未来 在时间的积累中增加了几分期待。这篇文章主要简单介绍下DataTrigger这个概念,熟悉WPF的人应该对这个 再熟悉不过了,在Silverlight中应用DataTrigger确实不多用,今天这篇文章简单的介绍一下在DataGrid中 使用DataTrigger。 当我们使用DataGrid绑定到数据源时,一般需要进行数据的呈现方式进行额外的修改,比如在下图中, 我们将类型User绑定到DataGrid中,如果我们需要对其中的IsManger呈现方式以更加友好化的呈现方式去做, 比如当False时.
阅读全文
摘要:DataGrid的Template(1) DataGrid的Template(2) DataGrid是Silverlight数据交互最重要的一个控件,基本上日常工作中都与其打交道,而运用Template则是必不可少的部分,前两篇已经简单的介绍了与 Template相关的内容,本篇将介绍在DataGrid中实现分组统计的功能。 默认情况下,我们使用分组功能可以实现如下效果: 而实际情况下,可能需要实现对分组的数据统计,如下图: 要实现这样的效果,需要修改DataGridRowGroupHeader的样式,在Blend中查看XAML,可以看到StackPanel,我们需要修改的就是这个地方: 我.
阅读全文
摘要:第一篇中曾介绍了通过配置的方式进行处理,由于容易出错,本文将提供一种代码的方式,主要的思想是通过自定义特性,直接贴类图: 由于给出源码,对这每一个类就不具体的分析了,如果你对前面配置方式已经掌握了,理解代码应该不是难事。 在服务契约中,我们添加实现的WcfErrorBehavior,WcfSilverlightFaultBehavior特性 [WcfErrorBehavior] [WcfSilverlightFaultBehavior] public class TestService : ITestService { } 打开Web.config,可以发现并未对任何节点进行修改,运行时,可.
阅读全文
摘要:前两篇主要介绍了WCF与客户端的错误传输,在实际的项目中,我们需要对服务契约中的每一个操作都进行try-catch捕捉异常,通常我们会将文件通过日志记录下来, 当操作很多的时候,对每一个方法都添加Log处理程序是很不方便的,在ASP.NET中可以将其写在Application_Error中,WCF则提供了IErrorHandler类实现。 IErrorHandler接口定义如下,主要提供了2个方法,具体见MSDN namespace System.ServiceModel.Dispatcher { public interface IErrorHandler { void ProvideFa.
阅读全文