摘要: 本文实例基于Silverlight实用窍门系列:71.Silverlight的Style基础之上。   一、Implicit Style(隐式样式):是不需要制定x:Key属性的Style,它的作用于是所有指定TagetType的控件,而不需要在具体的每个控件去指定其Style="{StaticResource KeyName}"。如以下代码的Style就没有指定x:Key属性,也不需要在任何ListBox控件上指定Style,会自动作用于其上: 阅读全文
posted @ 2012-07-16 11:30 .NET架构 阅读(2368) 评论(5) 推荐(4) 编辑
摘要:  此文章实例基于Silverlight实用窍门系列:68.Silverlight的资源字典ResourceDictionary,如有数据源疑问请参考该文章。   在Silverlight中的Style相当于Html中的Css,是其一个重要的组成部分。它可以声明于UserControl.Resources也就是本页面资源内或者控件资源内,也可以声明于App.Xaml内或者ResourceDictionary字典资源内。   Style分为内联样式(控件本身样式)、页内级别样式(本身UserControl.Resources内样式)、应用程序域级别样式(App.Xaml内样式)、ResourceDictionary字典资源   Style的作用顺序是就近原则,比如一个控件先使用自身样式,然后在本页面内的资源寻找具有指定Key的样式,如果找到就使用此样式,没有就 阅读全文
posted @ 2012-07-02 10:46 .NET架构 阅读(4676) 评论(3) 推荐(5) 编辑
摘要:  视觉状态是指控件的某些特定状态的外观,如MouseOver、Focused、Unfocused、Normal等等。在这些状态中有一些状态是不可同时存在的,我们将这种互斥的状态划分为同一个组,称之为视觉状态组。同理多个视觉状态组之间的状态是可以共存的。   VisualStateManager是视觉状态管理器,其内部包含多个视觉状态组   VisualStateGroup是视觉状态组,内部包含多个互斥的视觉状态   VisualStateGroup.Transitions是视觉状态改变定义,GeneratedDuration是状态改变时间,From是从什么状态,To是到什么状态   VisualState是视觉状态,定义名字,内部是在状态改变时对控件外观的修正改变。 阅读全文
posted @ 2012-06-18 11:57 .NET架构 阅读(4247) 评论(4) 推荐(2) 编辑
摘要:  ScrollViewer在Silverlight中是一个很常用的控件,它有以下一些常用可设置属性:   HorizontalScrollBarVisibility:水平方向滚动条   VerticalScrollBarVisibility:垂直方向滚动条,其值为ScrollBarVisibility枚举类型分为     Disabled:不显示,但是可以通过鼠标或者键盘移动文字内容     Auto:根据内容宽度和高度自动决定是否出现滚动条     Hidden:总是隐藏滚动条,无法移动被遮挡的内容     Visible:总是显示滚动条   ScrollToHorizontalOffset:设置ScrollViewer的内容水平偏移量   ScrollToVerticalOffset:设置ScrollViewer的内容垂直 阅读全文
posted @ 2012-06-11 11:39 .NET架构 阅读(4748) 评论(5) 推荐(2) 编辑
摘要: ResourceDictionary是一个键控对象字典,可在 XAML 和代码中使用。在其中我们可以定义样式、模板等以方便在其他页面中随时调用。   首先我们新建一个ResourceDictionary页面如下图: 此时我们将此资源字典拷贝一份,仅仅只是将文字样式中的字体颜色从蓝色变为红色。然后我们在App.xaml中加载这两个资源字典,首先加载蓝色字体的资源字典A,然后我们再加载红色字体的资源字典B,代码如下: 阅读全文
posted @ 2012-06-04 11:15 .NET架构 阅读(5933) 评论(16) 推荐(7) 编辑
摘要: 在Silverlight中进行通讯,只能使用4502-4534之间的端口进行数据传输,另外Silverlight客户端会自动向943端口的服务器端发送一个“”的语句请求,然后服务器端943端口回发以下文件以许可Socket通讯。A.现在我们首先来看服务器端的代码,主要分为策略响应步骤和服务响应步骤。   策略步骤一:启动监听943端口是否有需要安全策略文件请求   策略步骤二:如果客户端请求是,则将安全策略文件作为bytes发送给客户端   服务步骤一:启动服务器端,监听4525端口,是否有Socket对话请求   服务步骤二:如果有客户端请求的连接,则发送消息告知客户端 阅读全文
posted @ 2012-05-24 11:17 .NET架构 阅读(3568) 评论(9) 推荐(9) 编辑
摘要: VS 11 Beta已经发布好几月,今天我们来看看Vs 11的安装过程,在接下来的文章里会一步一步学习和发现VS 11的新特性。首先下载VS 11 Beta的安装文件如下: 你可以通过以下链接 VS 11 Beta进行下载,分为安装包和语言包。当然选择下载DVD ISO文件到本地速度更快捷: 我们解压ISO文件,然后点击“vs_premium.exe”文件(当然“旗舰版”和“个人版”略有不同),可以看到以下界面: 点击“I agree to the license....”并且Install,就会进入以下界面,对VS 11进行安装: 最后安装成功时显示如下: 安装中文语言包,打开... 阅读全文
posted @ 2012-05-21 11:21 .NET架构 阅读(3903) 评论(7) 推荐(5) 编辑
摘要: 在Silverlight中我们使用了数据模板,在很多时候也需要获取到数据模板上的控件,并且进行改变。本文使用的实例数据源和上节相同,如需了解请下载源码查看。   当然在这里我们可以分为获取数据模板原始控件和获取数据模板当前行控件两种。   一:获取数据模板原始控件。即通过“lbTempName.LoadContent()”的方式获取到原始数据模板的根元素(所有的DataTemplate数据模板都只有一个根元素,否则会报错) 阅读全文
posted @ 2012-05-08 11:26 .NET架构 阅读(4528) 评论(0) 推荐(6) 编辑
摘要: 在Silverlight中,我们的数据列表显示控件有ListBox、DataGrid等。对于显示出来的数据条目样式外观的管理是通过DataTemplate(数据模板)来完成的。本节将从DataTemplate基础说起如何使用DataTemplate。 阅读全文
posted @ 2012-05-07 11:25 .NET架构 阅读(4749) 评论(3) 推荐(8) 编辑
摘要:   在Silverlight中我们经常看到数据绑定源由DataContext或者ItemsSource指定,那么他们之间的区别有哪些呢?  DataContext:从英文字母意思是数据上下文,在Silverlight中某个父级元素设置了DataContext,那么其子元素将可以继承并且使用DataContext中的属性。DataContext绑定的数据源可以是实体集合、实体、属性等。     ItemsSource:其数据源通常是实体集合(一列数据),无法让其子元素继承使用。     下面我们以一个实例主要讲解DataContext的用法,其中在父级元素Grid设置了一个DataContext属性绑定实体,该实体内部有一个属性为实体集合,此实体集合用于Grid的子元素ListBox的ItemsSource属性绑定 阅读全文
posted @ 2012-04-23 12:30 .NET架构 阅读(4351) 评论(4) 推荐(10) 编辑
摘要:    在Silverlight中的MVVM模式下将前台页面和ViewModel界面交互分离开是通过本节所要讲述的Command实现的。我们自定义一个Command需要继承于ICommand接口并且实现这个接口。它有CanExecute()、Execute()方法和CanExecuteChanged事件组成。      CanExecute():判断是否继续执行操作。      Execute():执行操作的内容。      CanExecuteChanged:当出现影响是否应执行该命令的更改时发生。     首先:自定义的一个btnCommand。 阅读全文
posted @ 2012-04-16 14:16 .NET架构 阅读(3639) 评论(5) 推荐(7) 编辑
摘要:   在Silverlight中的Action是指动作的意思,在Trigger触发器触发的时候,执行Action动作。在我们自定义Action的时候可以定义两种Action分别是继承于TargetedTriggerAction和TriggerAction的。     TriggerAction:继承于此的自定义Action动作的操作对象是关联采用此Action的对象。     TargetedTriggerAction:继承于此的自定义Action动作的操作对象可以是其他对象,由TagetName指定的对象。 本文在前一篇文章的实例基础上增加了一个自定义的Action。继承于TriggerAction和TargetedTriggerAction都可以重写以下三个方法:OnAttached()、OnDetachi 阅读全文
posted @ 2012-04-09 10:36 .NET架构 阅读(2571) 评论(3) 推荐(9) 编辑
摘要: 在Silverlight应用程序和客户进行交互工作的时候可以不用写后台代码而通过Xaml代码来实现,在本文我们将学习了解Trigger触发器。 Trigger触发器:引发动作的因素,比如鼠标点击、键盘输入、鼠标双击、键盘Enter键敲入、鼠标中键滚动等等,这些都是触发动作交互的条件。 Trigger分为以下两类:     一、系统定义好的如EventTrigger、PropertyTrigger等。     二、用户自定义的Trigger,例如在SL4中是没有鼠标双击事件的,这时我们可以新建一个DoubleClickTrriger,通过定时器检测当点击页面同一个地方的时间间隔小于300毫秒的都属于鼠标触发动作。    EventTrigger主要是指定触发的事件名称,如下例是在MouseLeftButto 阅读全文
posted @ 2012-03-26 11:13 .NET架构 阅读(6494) 评论(4) 推荐(8) 编辑
摘要: 在Silverlight中我们需要了解Behavior行为,它可以将一些常用的行为、效果等封装起来,在我们需要调用的时候可以非常方便的调用,主要需要引用System.Windows.Interactivity.DLL。它的运行本质是为采用了Behavior行为的源对象自动加载处理事件。 我们自定义一个Behavior行为需要做到以下三点方可成功。 一、继承于System.Windows.Interactivity.DLL中的Behavior类,其中的T可以更换为Image、TextBox、Label等所有的元素对象甚至是DependencyObject,表示这个自定义的Behavior可以作用于哪种控件。 二、重写覆盖OnAttached方法,在这个方法中需要为添加Behavior 阅读全文
posted @ 2012-03-19 11:14 .NET架构 阅读(2822) 评论(5) 推荐(8) 编辑
摘要: 在本系列的第17篇文章中“Silverlight实用窍门系列:17.中心点联动多线的可拖动控件(绘制工程图、拓扑图基础) ”,制作了基本的中心联动图标。有园友对此图的扩展不是很清晰,所以在本文中我们将在那基础上做一个简易的拓扑图。 首先:将黄球为中心,绿球为圆圈的节点封装为一个子控件,然后提供一个接口,该接口可以接收一条外部的直线,并且这个接口可以指定在子控件中外部链接线的起始点还是结束点。 阅读全文
posted @ 2012-03-13 14:09 .NET架构 阅读(3135) 评论(11) 推荐(7) 编辑
摘要:   在这里我们将实体集的绑定分为三类:    一、直接控件绑定。    二、DataTemplate模板绑定。    三、详细信息绑定。   首先:我们来看第一类直接控件绑定是对控件的ItemsSource属性进行绑定,然后使用SelectedValuePath指定选择值,DisplayMemberPath指定显示值的方式。Xaml代码如下: 阅读全文
posted @ 2012-03-12 11:08 .NET架构 阅读(2792) 评论(1) 推荐(9) 编辑
摘要: 本文将简单讲述Silverlight中的Binding数据时的数据验证。     NotifyOnValidationError:是否在出现异常错误信息出现的时候激发BindingValidationError事件。     ValidatesOnExceptions:是否将异常信息作为错误信息显示出来。     ValidatesOnDataErrors:结合IDataErrorInfo接口以显示错误信息。     BindingValidationError:这是一个路由事件,当绑定数据的源对象A有错误的时候抛出异常让此事件接受并且触发,当源对象A没有BindingValidationError事件的时候让其父对象接受并且触发。 阅读全文
posted @ 2012-02-27 11:23 .NET架构 阅读(2545) 评论(2) 推荐(5) 编辑
摘要: 本文将详细讲述Silverlight中Binding,包括Binding的属性和用法,Binding的数据流向。 Binding:一个完整的Binding过程是让源对象中的某个属性值通过一定流向规则进行转换和验证之后绑定到目标对象的某个属性上面。这个源对象由ElementName指定,源对象的属性由Path指定,流向规则由Mode指定,转换由Converter指定,验证由ValidatesOnDataErrors等指定。 首先我们来看Binding的属性如下:     ElementName:指定源对象的名称     Path:指定需要绑定的源对象的属性名称     Mode:指定Binding的数据流向规则     Converter:指定源对象的属性需要经过用户自定义的转换 阅读全文
posted @ 2012-02-23 11:13 .NET架构 阅读(4530) 评论(7) 推荐(11) 编辑
摘要: 在Silverlight中我们使用Label、TextBlock、TextBox等控件的时候经常会遇到换行的问题,在这里我们以这三个典型的控件来看看换行方式。在本文中我们把换行方式分为自动换行和手动换行来看。 自动换行 Label控件在Silverlight中不支持自动换行。 TextBlock和TextBox可以通过设置TextWrapping="Wrap"属性让文字超过控件宽度时自动换行。 手动换行 Label、TextBlock、TextBox控件都可以在后台中使用Environment.NewLine属性来手动换行。 TextBlock可以在Xaml代码中使用标签来手动换行。 阅读全文
posted @ 2012-02-20 12:33 .NET架构 阅读(8697) 评论(10) 推荐(12) 编辑
摘要: 由浅入深CIL系列文章从基础开始一步一步讲解CIL语言,让我们能够更加了解CIL,了解.NET的中间语言和底层实现,为我们在平时开发和研究C#的过程中打好基础。希望大家能够喜欢~ PostSharp AOP编程系列文章将以实例的方式分析和讲解基于PostSharp框架的AOP编程,为我们在工作中的编码提供方便和快捷,从繁复的次要逻辑中解放出来,让大家用更多的心思去关注主业务流程逻辑。 阅读全文
posted @ 2012-02-13 10:22 .NET架构 阅读(3251) 评论(2) 推荐(9) 编辑
摘要: 在PostSharp中的MethodInterceptionAspect类是针对整个方法体的截取,继承于它的特性可以对整个方法体进行控制和日志截取、异步操作等。 这个类里面有一个主要的函数可以重载以实现包围整个方法体截取的作用,它是OnInvoke(MethodInterceptionArgs args)。意义如下: OnInvoke(MethodInterceptionArgs args):在它的内部可以通过base.OnInvoke(args)来调用我们加特性声明的方法执行流程,通过这个方法我们可以在方法开始调用前做操作,调用之后做操作。 首先我们编写一个继承于MethodInterceptionAspect类的特性,并且重载相关函数如下代码: 阅读全文
posted @ 2012-01-30 14:46 .NET架构 阅读(2230) 评论(3) 推荐(5) 编辑
摘要: 五个角色:场景(Context)、抽象表达式(Component)、终结符表达式(TerminalExpression)、非终结符表达式(NonterminalExpression)、客户端(Client) 场景(Context):解释器的全局信息 抽象表达式(Component):定义一个接口来解释操作 终结符表达式(TerminalExpression):直接跳过步骤,不用解释语句 非终结符表达式(NonterminalExpression):根据规则实现解释操作 客户端(Client):调用解释器,对语句进行解释。 实现思路:建立语法树,然后用语法将表达式进行解析。 阅读全文
posted @ 2012-01-09 10:59 .NET架构 阅读(2318) 评论(2) 推荐(6) 编辑
摘要: 在PostSharp中得OnExceptionAspect类是针对异常的消息截取。继承于它的特性将可以在发生异常的时候对方法体内的异常截取,并且做出动作,看是否停止本程序运行,还是忽略异常。 这个类里面有两个主要的函数可以重载分别是OnException(MethodExecutionArgs args)、GetExceptionType(System.Reflection.MethodBase targetMethod)。他们分别意义如下: OnException(MethodExecutionArgs args):当发生异常时截取异常发生的位置(在哪个命名空间?哪个类?哪个方法?)、异常类型、异常消息等信息,并且可以异常将如何处理。 GetExceptionType(System.Reflection.M 阅读全文
posted @ 2011-12-29 11:28 .NET架构 阅读(1780) 评论(0) 推荐(5) 编辑
摘要: 五个角色:部件(Component)、具体部件(ConcreteComponent)、装饰抽象类(Decorator)、具体装饰对象(ConcreteDecorator)、客户端(Client) 部件(Component):定义对象的接口,可以给对象动态增加职责。 具体部件(ConcreteComponent):实现对象。 装饰抽象类(Decorator):维护一个部件的实例,并且提供一个和部件相同的接口以使用。 具体装饰对象(ConcreteDecorator):实现装饰效果,增加职责。 客户端(Client):使用装饰包围部件,让部件增加功能。 实现思路:根据部件的需要动态的为部件增加职责功能。 阅读全文
posted @ 2011-12-22 10:22 .NET架构 阅读(2333) 评论(0) 推荐(4) 编辑
摘要: 四个角色:抽象状态类(State)、具体状态类(ConcreateState)、情景类(Context)、客户端(Client) 抽象状态类(State):提供一个与情景类有关的State行为。 具体状态类(ConcreateState):实现这个行为,实现一个状态。 情景类(Context):维护一个State的实例对象,并且提供一个客户操作置换状态的接口。 客户端(Client):直接调用情景类操作即可。 实现思路:直接调用情景类,然后在情景类自动操作或者手动操作置换状态,并且取得不同结果。 阅读全文
posted @ 2011-12-19 12:02 .NET架构 阅读(4553) 评论(1) 推荐(6) 编辑