随笔分类 -  Silverlight

Silverlight的点点滴滴
摘要:此文旨在指出在silverlight动画中出现的问题:一、当设置完动画即(StoryBoard.Begin()或者加载动画完毕后)后无法设置目标对象属性的值。标题可能有点绕口,看下下面的代码即可明白: Storyboard sb = new Storyboard(); DoubleAnimation animation = new DoubleAnimation(); animation.Duration = TimeSpan.FromSeconds(2); animation.AutoReverse = ... 阅读全文
posted @ 2011-10-27 23:01 wangyafei_it 阅读(792) 评论(1) 推荐(2)
摘要:学习过ASP.NET MVC的童鞋肯定非常熟悉这种映射的写法,一个规则对应一个映射,当然也可以定义多个规则来进行导航。 <sdk:Frame x:Name="MainFrame" Navigated="MainFrame_Navigated" NavigationFailed="MainFrame_NavigationFailed"> <navigation:Frame.UriMapper> <sdk:UriMapper> <sd... 阅读全文
posted @ 2011-10-27 13:15 wangyafei_it 阅读(404) 评论(0) 推荐(0)
摘要:1.如果要使用动画控制Element显示与否,不使用Visibility属性,而是使用Opacity属性来控制动画的效果。2. 如果要改变Element的位置,则最好使用Cavas容器,然后控制Canvas.Left和Canvas.Top属性。3.其实最通用的属性应该是Transform,如果要控制Element的位置,则使用TranslateTransform;控制旋转的RotateTransform;缩小放大的ScaleTransform.4.如果要修改Element的颜色,则最好将Target设置为Brush,值就是一个个Bursh的类型。 阅读全文
posted @ 2011-10-26 21:05 wangyafei_it 阅读(232) 评论(0) 推荐(0)
摘要:线性插值动画制作的动画看起来很机械,同时也不能进行模拟真实的动画效果,虽然可以使用键值动画,可是键值动画需要写大量的代码,总是不尽人意,还好在Silverlight中提供了Easing(缓动函数)这个功能,真的是做的少实现的多。Easing的基类是EasingFunctionBase类:以下为其实现类:System.Windows.Media.Animation.BackEase System.Windows.Media.Animation.BounceEase System.Windows.Media.Animation.CircleEase System.Windows.Media.Ani 阅读全文
posted @ 2011-10-26 20:36 wangyafei_it 阅读(466) 评论(2) 推荐(1)
摘要:{Binding 属性,Mode=绑定模式,ElementName=要绑定的控件的名字} 阅读全文
posted @ 2011-10-23 12:05 wangyafei_it 阅读(206) 评论(0) 推荐(0)
摘要:InkPresenter,这个东西再熟悉不过,没错就是手写板,我们可以在它上边想怎么画怎么画,其实他的原理很简单,就是捕捉鼠标的轨迹,然后使用指定的颜色和宽度组成线条,然后不停的记录和显示。先看个效果就是一个简单的手写(鼠标).下面开始详细介绍InkPresenter的使用。首先看下要使用到的类,以及方法:1.InkPresenter,InkPresenter成为墨迹控件,继承自Canvas类,它不单单是一个控件,而是一个可以接收SL中输入的接口;主要属性Strokes,一个集合(StrokeCollection),表示要显示的画笔。2.Stroke,表示单个墨迹画笔,属性DrawingAtt 阅读全文
posted @ 2011-10-23 11:59 wangyafei_it 阅读(517) 评论(0) 推荐(0)
摘要:在Silverlight中操作Xml有三种方式,分别是使用XmlReader(XmlWriter),Linq to xml ,XmlSerializer(进行Xml的序列化)。下面列出微软.net类库提供的读写xml文件个类及其特点:类名称优点缺点XmlReader快速、高效、可扩展只读,只向前,需要人工验证XmlDocument可往返、可读写、支持XPath筛选比XmlReader慢XPathNavigator可往返,支持XPath和XSLT只读XPathDocument比XmlDocument,优化支持XPath和XSLT比XmlReader慢一、使用XmlReader读取Xml以下为Xm 阅读全文
posted @ 2011-10-17 22:27 wangyafei_it 阅读(1054) 评论(0) 推荐(1)
摘要:Storyboard.TargetProperty的设置应该是动画中的一个关键了,因为如果此属性设置错误(语法错误,或者是由于设置元素没有初始化此属性),不仅没有动画效果,反而出现错误。设置Storyboard.TargetProperty有三种方式(个人总结理解)1.依赖属性的设置(直接使用属性)... 阅读全文
posted @ 2011-10-09 23:33 wangyafei_it 阅读(3724) 评论(0) 推荐(2)
摘要:From: from有两个效果,当仅仅设置了From值而没有设置To和By的值,那么动画的起始值仍然是设置的Form的值,然后动画改变属性的值到当前元素此属性的值。 当设置了From,并且设置了To或者By,那么动画的起始值是设置的Form的值,然后动画改变属性的值到To或者到By和From的值之和的位置。To:To也有两个效果,当设置了From和To,则从指定元素的属性值或者是上一个动画的值到To属性指定的值。 仅仅设置了To,则从当前的元素的属性基值或者上一个动画的输出值到To属性指定的值。By:By也是两个效果当设置了From和By,则从元素属性的值到From和By的值之和。... 阅读全文
posted @ 2011-10-07 17:37 wangyafei_it 阅读(322) 评论(0) 推荐(1)
摘要:Silverlight中的打印只有一个类,那就是PrintDocment这个对象来实现。当然实现方式也很简单,先看下实现的步骤:其实只需两个步骤即可完成,即绑定PrintDocument的PrintPage事件和调用Print方法。PrintDocument document = new PrintDocument();document.PrintPage += documentImage_PrintPage;document.Print("Image Document");这个就完成了一个打印,其中PrintPage事件是最为重要的,因为整个打印的工作都是在这个事件中完成 阅读全文
posted @ 2011-09-26 23:39 wangyafei_it 阅读(802) 评论(0) 推荐(0)
摘要:Silverlight中的PlaneProjection主要来实现三维的效果(并非3D引擎),通过使用PlaneProjection可以达到三维空间的立体效果。PlaneProjection 具有以下 12 个可用于控制对象的旋转和位置的属性:RotationX、RotationY、RotationZ、CenterOfRotationX、CenterOfRotationY、CenterOfRotationZ、GlobalOffsetX、GlobalOffsetY、GlobalOffsetZ、LocalOffsetX、LocalOffsetY 和 LocalOffsetZ.RotationX,元 阅读全文
posted @ 2011-09-26 15:10 wangyafei_it 阅读(1464) 评论(1) 推荐(1)
摘要:对于 Silverlight(也适用于 WPF),用来在布局中调整元素大小和定位元素的技术分为两个步骤:先执行“度量”处理过程,然后执行“排列”处理过程.重写 MeasureOverride,以便在类参与 Silverlight 布局系统时实现类的自定义布局大小调整行为。实现时应执行以下任务:循环访问类的特定子对象集合(属于布局的一部分),并对每个子对象调用 Measure。直接在每个子级上获取 DesiredSize(该对象将在调用 Measure 后设置为一个属性)。根据子对象所需的连续测量大小,计算父级所需的净大小。protected override Size MeasureOverr 阅读全文
posted @ 2011-09-21 14:22 wangyafei_it 阅读(289) 评论(0) 推荐(0)
摘要:Silverlight中变换效果的分类:1.TranslastTransform平移动画,属性X和Y,指定平移的长度;2.RotateTransform,旋转动画,属性Angle(旋转的角度),CenterX(旋转后的元素的X轴中心坐标),CenterY(旋转后的元素的Y轴的中心坐标);3.ScaleTransform,缩放动画,属性ScaleX(缩放的width的大小),ScaleY(缩放的Height的大小),CenterX(缩放后的元素的X轴中心坐标),CenterY(缩放后的元素的Y轴中心坐标),当设置ScaleX和ScaleY的值为负数的时候则会出现对称的倒影;4.SkewTrans 阅读全文
posted @ 2011-09-14 22:52 wangyafei_it 阅读(485) 评论(0) 推荐(0)
摘要:RadialGradientBrush的属性解释GradientOrigin:渐变开始的坐标Center:是最外层渐变的坐标RadiusX:表示渐变圆的Width,默认值是0.5(是通过测量当前的渐变区域(左上角到右下角)的Width,然后得到一个比例,0.5代表的是1/2)RadiusY:表示渐变圆的Height,默认值是0.5(是通过测量当前的渐变区域(左上角到右下角)的Height,然后得到一个比例,0.5代表的是1/2)这两个属性的变化其实是很微妙的,默认情况下GradientOrigin和Center的点是重合的,都是(0.5,0.5) <Rectangle Height=&q 阅读全文
posted @ 2011-09-13 10:39 wangyafei_it 阅读(461) 评论(0) 推荐(0)
摘要:Silverlight处理图形的效果其实还是蛮不错的,除了基本的Shape图形之外,还提供了Geometry复杂的图形,以及可以自定义的Path图形。先看一下Shape类库的架构图:其实挺简单的,我们主要关注的就是Shape下的几个类库图形。首先来看看Shape类的几大属性:1.Fill,顾名思义就是图形的填充颜色,对Line无效2.Stroke,就是边框颜色3.StrokeThickness边框的宽度,用数字表示4.StrokeStartLineCap线条开始端的形状,仅Line,Polyline,以及Path有,值类型是个枚举,Round、Flat、Square、Triangle。5.St 阅读全文
posted @ 2011-09-11 11:49 wangyafei_it 阅读(647) 评论(0) 推荐(0)
摘要:通俗理解Stretch的Uniform和UniformToFill:Uniform(默认的值),控件的高度和宽度会增加直到达到了容器的大小,也就是说控件的大小和容器的大小是有关系的,同时如果给控件设置了明确的高度和宽度,则他们的最大值是有一个界限的.例如设置一个Rectangle的height为10,为width为100,那么将会得到10*10的图形.UniformToFill,控件的高度和宽度会对称的设置直到填充整个容器.例如设置一个Rectangle在一个100*200的容器中,那么则会得到一个200×200的控件大小,其他的部分则会被截取掉.如果设置了明确的高度和宽度,例如设置 阅读全文
posted @ 2011-09-04 16:23 wangyafei_it 阅读(697) 评论(0) 推荐(1)
摘要:可能这个标题说的有点奇怪,其实这个功能类似于我们在ASP.NET中的,我们通常会把一些需要登录用户才能访问的页面放到单独文件夹,而一些不用登录页面直接放到其他的路径,同理我们今天实现的就是这样一个功能,当用户没有登录的时候而导航了需要登录才能访问的页面,则跳转到页面去.废话不多说,开始正题:实现这个功能需要以下步骤:1.自定义INavigationContentLoader接口的实现类,这一步是完成验证的核心地方.对于INavigationContentLoader的解释:定义对应于一个 URI 的内容的加载方式。实现此接口以为 Silverlight 导航系统提供自定义的内容加载.看下边的实 阅读全文
posted @ 2011-09-03 23:36 wangyafei_it 阅读(357) 评论(0) 推荐(0)
摘要:导航经常在程序中要用到,Silverlight中的导航分为两大类,三小类.两大类:使用导航框架来完成(Frame,或者NavigationService类(包含在Page类中)),或者使用传统的修改容器的Content或者是Child等内容来实现导航下面慢慢来讲解:一.通过非框架的方式来完成 1.其实这种方式的原理很简单,就是修改容器的根元素,比如我们的页面元素如下 <Grid x:Name="LayoutRoot"> </Grid>没错,就是只有一个Grid,我们可以通过修改Grid的Children来实现导航,代码如下: LayoutRoot.C 阅读全文
posted @ 2011-09-03 00:26 wangyafei_it 阅读(1289) 评论(3) 推荐(0)
摘要:如果在一个页面我们正在处理一些事情,可是一些信息的参考需要跳转到另一个页面,可当我们返回回来发现我们页面之前的数据被刷新了,是不是有杀人的冲动呢,不急,下面我们就自己做一个页面的缓存.其实,这个页面缓存的原理很简单,使用一个Dictionary存放一些我们我要要进行缓存的页面的名字和页面的对象,ok,废话不多说,开始实现.1.定义一个枚举,表示我们要缓存的页面(其实我们可以用string类型来代替,不过枚举的话可以保证我们的访问不会出错,毕竟已经写好了,扩展起来也很方便,也是全局的)切记,这里的枚举值和页面的名字要一致,因为在跳转的时候需要根据反射去找到对应的UserControl。publi 阅读全文
posted @ 2011-08-29 21:15 wangyafei_it 阅读(340) 评论(0) 推荐(0)
摘要:在silverlight中访问其他Assembly中的资源,记住这些文件的Build Action都要设置为 Resource,访问格式是 /AssemblyName;component/Folder/FileName 阅读全文
posted @ 2011-08-29 20:50 wangyafei_it 阅读(226) 评论(0) 推荐(1)