上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: 在实际应用中,我们可能会遇到需要实时的显示某一些数据的情况,比如心电图、CPU当前使用率或者内存使用率等等。在Silverlight有一个Timer组件可以轻松的做到这一点,该组件可以每隔一段时间就调用一次需要处理的函数,在此这个函数中通过WebService,WCF等获取到相应的值,然后更新UI上的图表控件,以达到实时更新数据的作用。 现在我们来看看Timer组件的使用思路: 首先将现有的UI线程赋值出来,并且初始化Timer组件Timer timer=Timer(TimerCallback, Object, Int32, Int32) 这里有4个参数。 ●第一个参数是需要处理的函数的委托. 阅读全文
posted @ 2011-03-14 17:18 .NET架构 阅读(6439) 评论(8) 推荐(10)
摘要: 在Silverlight中极其耗时的操作会导致UI进程假死,如果将复杂的操作和UI显示分离开而且我们需要了解这复杂操作的后台进程当前运行的进度如何?这里我们可以使用BackgroundWorker来解决这个问题。 BackgroundWorker是一个封装了的Thread组件,它能够让用户方便的开启一个独立的线程执行复杂和耗时的后台工作,随时报告当前完成程度,随时中止异步线程操作,还可以在异步操作状态报告中(ProgressChanged)和异步操作完成后(RunWorkerCompleted)的响应事件中访问UI线程。 BackgroundWorker的一些常用的属性、方法和事件如下: •. 阅读全文
posted @ 2011-03-11 17:01 .NET架构 阅读(4753) 评论(9) 推荐(7)
摘要: •在项目中时常会运行很多极其复杂的算法之后再更新UI控件,可是我们发现这会耗费大量的时间,几乎让UI进程假死。有什么办法可以让程序在后台完成这些复杂的算法,当算法完成的时候再去更新UI控件以避免UI进程假死的情况呢?对了,多线程技术!后台创建一个线程来进行复杂计算,就可以不耽误UI线程更新UI控件。可是如果直接在线程执行的函数里面去更新UI控件则会报“跨线程访问无效”的错误提示。下例中前台XAML文件里有两个UI控件label1和label2,在这里通过调用this.label1.Dispatcher.BeginInvoke方法执行labelInvoke委托的函数UpdateLabel(str 阅读全文
posted @ 2011-03-10 16:21 .NET架构 阅读(3873) 评论(6) 推荐(4)
摘要: 在Silverlight程序(非Out of Browser模式)中是无法直接调用DLL的,但是很多的计算或者其他应用程序的调用中我们需要用到DLL的加载。比如调用DLL来识别身份证读卡器传输过来的信号,比如要和某Delph编写的程序数据通讯等等。本文将简单的自写一个DLL文件,然后通过调用此DLL自定义的一个GetNum函数计算传入得两个参数之和。 首先我们使用VS2010编写一个名为IlasLinkDll.dll的C++语言DLL文件(编写这个DLL的源码也会在本章结尾附带),其内部的关键代码如下:#ifdef MYLIBDLL#define MYLIBDLL extern " 阅读全文
posted @ 2011-03-09 15:33 .NET架构 阅读(4210) 评论(7) 推荐(5)
摘要: 问题:笔者在项目中需要循环一个WebService方法N次,以获得N个结果数据,但是这过程中出现了一些问题,获取到的结果数据量大于笔者的预期且值为N*N。 Silverlight中常见的数据访问方式都是通过类似于WebService异步请求方式来获取的,相信大部分人都会这个WebService的请求方法,但是在某一个需要输入参数获取一个结果的WebService方法中,假设我们需要循环输入N个参数,然后获取N个结果集的情况下进行的操作会出现什么情况呢?本文将围绕循环WebService循环访问探讨一下Silverlight中的异步WebService数据请求过程。 首先新建一个Silverl. 阅读全文
posted @ 2011-03-08 15:37 .NET架构 阅读(2509) 评论(2) 推荐(5)
摘要: 在实际项目中,我们通常会在XAML代码中创建控件的动画效果,但在某一些特殊情况下,需要后台进行动画效果的自定义修改。那么我们就需要用到本节中讲述的相关动画效果自创建知识。在Silverlight中常用的动画创建方式有4种分别为DoubleAnimation,ColorAnimation,PointAnimation,DoubleAnimationUsingKeyFrames。 •DoubleAnimation是控制控件的某一些Double值的属性的变化来形成动画的,比如让某个空间的Opactiy变大变小,就是透明度变大变小。 •ColorAnimation是控制控件的颜色的渐变,从绿色变蓝色. 阅读全文
posted @ 2011-03-07 14:35 .NET架构 阅读(3962) 评论(6) 推荐(7)
摘要: Silverlight不支持读写服务器端的硬盘,可是很多时候用户需要在Silverlight客户端往服务器端上传文件,那么本节将讲述Silverlight中最简单的上传文件的方式:在Silverlight客户端将文件序列化为Byte[]字符组,然后服务器端使用webService接收客户端的数据并且还原为文件即可。 下面我们新建一个Silverlight应用程序解决方案SLUpload,然后在SLUpload.Web项目中鼠标右键点击此项目,添加一个web服务页面Upload。在此页面中写入下面代码:/// <summary>/// 上传文件/// </summary> 阅读全文
posted @ 2011-03-04 14:43 .NET架构 阅读(4347) 评论(14) 推荐(8)
摘要: 本章主要解决如何在DataGrid的行内绑定ComboBox和ListBox。在数据集方面,先建立一个城市实体类,这个实体类有3个属性,分别是城市名、城市区号、城市区县集合。城市区县集合是很多个区县的集合,所以区县类也是一个实体类包括2个属性分别为区县名和区县值。在这里城市类集合绑定到DataGrid中,区县类集合绑定到ComboBox和ListBox中。 首先我们建立城市实体类和区县实体类集合: /// <summary> /// 城市实体类 /// </summary> public class City { private string cityName; pri 阅读全文
posted @ 2011-03-03 14:25 .NET架构 阅读(6919) 评论(21) 推荐(5)
摘要: 本节是继上节所讲述的基础上做出一些调整而来,如有疑问可参考上节文章。 在实际项目中可能会遇到绘制各类工程图或者网络拓扑图之类的情况,这类图基本上都是以设备加线的方式连接在一起的。那么一个中心设备连接多个外围设备的展示方式就是本节需要讲述的内容。上节已经讲了如何绘制一个以某点为圆心绘制出多条线,且线和线之间的角度需要相同来组成一个圆的图。在这个图的中心点加一个设备牵动所有的线的中心点的变化同时在外围点也加一个设备。中心设备和外围设备都可以随意拖动。中心设备的拖动牵连所有与中心设备关联的设备拖动。下面请看Silverlight运行预览图:在线演示 在Photoshop里面绘画两个不同颜色的球(绿色 阅读全文
posted @ 2011-03-02 13:45 .NET架构 阅读(4670) 评论(23) 推荐(6)
摘要: 在Silverlight中有一个基础的类Line,此类用于绘制直线。在数学中两点的坐标确定即可绘制直线,所以Silverlight中的Line类有4个属性分别是X1、Y1、X2、Y2分别代表起始点的坐标1和线结尾点的坐标2。设置好了这两个点的坐标就可以显示出一条直线来。本文标题是以某点为圆心绘制出多条线,且线和线之间的角度需要相同来组成一个圆。比如说:我们假设有3条线,需要组成一个圆,那么每条线之间的角度就是360/3=120度,如果我们有8条线,那么线和线之间的角度就是360/8=45度。要实现这个效果需要自定义一个线控件,为此线控件设置中心点的X、Y坐标和线的长度(也就是形成的圆的半径长. 阅读全文
posted @ 2011-03-01 16:30 .NET架构 阅读(3364) 评论(0) 推荐(5)
摘要: 图表应用于表现数据量,进行直观的对比,但是在某一些领域中如果数据之间大小差异过大,那么会出现某一些数据因为过小,而无法让用户看见的情况。例如在统计一组用户电脑的网络发包量的时候,有一些用户开启电脑几十个小时,有一些用户开启电脑几秒钟。很明显用户开机几十个小时的发包量巨大,而开机几秒钟的发包量极小,如果放在一个Visifire的图标中组成一个统计列的时候,发包量小的电脑几乎看不见了。这种情况下,我们就可以通过点击文字标注栏的Legend文字来确定某一个在图表上看不见的用户电脑的发包量。 首先我们设置一个实体类,该类包含(ComputerName,NetWorkNum)两个属性,分别代码电脑名和. 阅读全文
posted @ 2011-02-28 16:46 .NET架构 阅读(6118) 评论(7) 推荐(9)
摘要: 在实际项目开展中,往往会牵扯到需要绘制图表的情况。而Visifire是一个比较美观大方的第三方图表控件,本文会讲述如何初步使用Visifire控件。 首先我们需要从Visifire的官方网站下载:http://www.visifire.com/,新建一个项目,引入SLVisifire.Charts.dll。在MainPage.xaml.cs代码中添加代码:using Visifire.Charts; 准备工作做好了,此时我在这里直接编写了一个函数如下: /// <summary> /// 创建一个图表 /// </summary> /// <param name= 阅读全文
posted @ 2011-02-26 17:09 .NET架构 阅读(14514) 评论(34) 推荐(12)
摘要: 本节是基于第四节的源码基础上进行扩展的源码,故本节源码附带有鼠标右键和全屏功能。 在本节,我们将讲述一个小技巧:使用Popup浮动窗体控件模拟Tip悬浮效果。此技巧的原理是当鼠标移动到某个控件上面的时候会触发MouseMove事件,此时设置Popup控件显示出来。触发此事件时能够获知此时的鼠标坐标位置,我们根据鼠标位置的变化的同时移动Popup控件的HorizontalOffset属性(获取或设置目标原点与弹出项对齐点之间的水平距离)和VerticalOffset(获取或设置目标原点与弹出项对齐点之间的垂直距离)。如果鼠标移出自定义控件,那么设置Popup浮动窗体的IsOpen属性为fals. 阅读全文
posted @ 2011-02-25 16:58 .NET架构 阅读(7439) 评论(13) 推荐(11)
摘要: 上一节有位园友提问:“如果我做一个自定义的Grid,跟普通的Grid一样,但是有双击事件,可以实现吗??比如我要用我的Grid,添加引用后直接用,就有双击事件。这样的控件可以做出来吗??” 答案当然是肯定的。在这里我制作了一个实例,因为本类需要完全拥有Grid控件所有的事件,属性和方法,所以它需要继承于Grid控件而不是继承于UserControl。鼠标右键点击项目名称-->“添加”-->“新建项”-->选择“类”-->修改文件名称为“NewGrid.cs”,再将public partial class NewGrid :UserControl修改为public par 阅读全文
posted @ 2011-02-24 14:00 .NET架构 阅读(2929) 评论(3) 推荐(7)
摘要: Silverlight中是没有鼠标左键双击事件的。在实际项目中,我们只能够模拟鼠标双击事件。其原理如下:控件接受到第一次单击事件,此时开始设置一个计时器,在计时器的时间范围内收到第二次点击事件,那么执行双击事件应该执行的程序段。如果计时器在规定的时间范围内并未接收到第二次点击事件,那么执行单击事件。 一般情况下,windows默认的鼠标双击间隔在200毫秒以内,所以在程序中我们设置超时时间为200毫秒。 首先我们贴出鼠标双击类的所有源代码,此代码是在网上查找到的,进行了一部分的修改。类的注释在源码中已经写明:using System;using System.Threading;using . 阅读全文
posted @ 2011-02-23 15:55 .NET架构 阅读(3803) 评论(12) 推荐(5)
摘要: 上节内容提要:在实际项目中,我们可能会遇到用户自定义XML模板字段,根据这个模板上的字段来显示相应的字段的值到DataGrid。在这种情况下,需要使用XmlReader解析获取这个用户自定义的XML模板上有哪些字段,根据这个字段动态的生成一个实体类,之后再为此动态生成的实体类实例化... 在上一节中我们生成了一个未曾排版的DataGrid。本节将为此窗体排版,动态生成多个绑定列,为绑定列的Header计算宽度,使得绑定列能够合理的占满整个DataGrid。结合上节所述根据XML模板自动生成多个DataGrid,达到动态生成DataGrid,动态排版的目的。 本节首先引用两个域名空间: usi. 阅读全文
posted @ 2011-02-22 15:53 .NET架构 阅读(7083) 评论(17) 推荐(8)
摘要: 在实际项目中,我们可能会遇到用户自定义XML模板字段,根据这个模板上的字段来显示相应的字段的值到DataGrid。在这种情况下,需要使用XmlReader解析获取这个用户自定义的XML模板上有哪些字段,根据这个字段动态的生成一个实体类,之后再为此动态生成的实体类实例化,并且生成实体类集合绑定到DataGrid即可。(注意:平时我们绑定DataGrid是先在代码里面声明了实体类,实例化多个实体化类,形成实体类集合,绑定到DataGrid。可如果用户自定义XML格式的字段的时候,每次的实体类就不能为静态的了。必须为动态的才行。) 一、首先我们准备一个XML格式的模板数据。模拟用户自定义的XML模. 阅读全文
posted @ 2011-02-21 21:21 .NET架构 阅读(5635) 评论(13) 推荐(9)
摘要: 在实际应用中,我们常常会遇到创建菜单树的情况,而Silverlight的TreeView有时候不能满足要求,在这里我们将使用Accordion模拟一个效果比较好的菜单。 在本节中,我们使用绑定的方式来动态的显示ObservableCollection数据源集合。 首先我们需要在项目中引入System.Windows.Controls.Toolkit.dll和System.Windows.Controls.Layout.Toolkit.dll两个DLL文件。然后再XAML和XAML.CS代码中引用他们。 然后我们开始准备数据源部分,首先我们声明两个实体类,Catalog类和TestSimple类 阅读全文
posted @ 2011-02-19 15:12 .NET架构 阅读(5110) 评论(13) 推荐(8)
摘要: 在Silverlight中MouseDragElementBehavior拖动行为的对象添加了某一个元素之后,就可以让该元素可以被拖动。这个行为极大的方便了程序员的UI体验效果制作。但是在项目中,我们拖动了一个UI元素之后,我们往往还需要记录下这个UI元素的拖动后的元素坐标位置,以保存起来,让用户自定义的拖动元素下次打开的时候能够还原出来。在这里有一个问题,我们很难获得UI元素拖动后的X,Y坐标。经查询各方面资料以及实践之后得出这篇文章。通过加载MouseDragElementBehavior行为对象的DragFinished事件(本事件在每拖动一个像素点完成移动之后触发),在这个事件中我们. 阅读全文
posted @ 2011-02-17 13:31 .NET架构 阅读(5959) 评论(10) 推荐(8)
摘要: 继上节所讲,在上一节中,我们讲述了DataGrid绑定webService传输过来的XML数据实体类集合。在本节我们将这个DataGrid移动到一个ChildWindow中去。然后实现ChildWindow的弹出效果。以及对这个DataGrid的分页效果。实例源代码也是在上一节的基础上做一些改动而来。 一.Silverlight弹出子窗口。首先我们右键点击项目-->“添加”-->“新建项”-->选择“Silverlight子窗口”,重命名为“PopWindow.xaml”然后点击确定。就添加Silverlight的子窗口文件了。在这里,我们将DataGrid解析和绑定数据的X 阅读全文
posted @ 2011-02-16 13:31 .NET架构 阅读(6675) 评论(7) 推荐(7)
摘要: 根据第二节说述,我们能够从webService获取到相关的信息数据。那么我们如果要查询数据库的数据,就应该在webservice端使用Select 语句来查询到表,然后使用DataSet的GetXml()方法,获取到相应的XML格式化数据库表数据。在本实例中,我们在webService端模拟一串数据库表的数据。如下:<NewDataSet> <Table> <AddrName>四川</AddrName> <CityName>成都</CityName> <TelNum>028</TelNum> < 阅读全文
posted @ 2011-02-15 21:57 .NET架构 阅读(5153) 评论(11) 推荐(6)
摘要: 继上节动态的添加Rectangle矩形框所讲。在实际应用中,我们动态添加矩形框,然后使用鼠标右键点击该矩形框,得到一个弹出窗口,再为此矩形框关联一些实际信息。即可实现用户自定义的配置页面。本节将讲两个小技巧:一.鼠标右键菜单。二.Silverlight全屏模式。一.使用鼠标右键菜单。在这里我们需要单独引入两个Dll文件。(右键项目名称-->“添加引用”-->寻找到System.Windows.Controls.Input.Toolkit.dll[可以从本文源代码中找到]) System.Windows.Controls; System.Windows.Controls.Input. 阅读全文
posted @ 2011-02-14 15:49 .NET架构 阅读(7242) 评论(21) 推荐(10)
摘要: 本节我们讲一个关于在Sivlerlight中动态绘制矩形框的小技巧。此技巧可以让用户自定义的绘制矩形框。此技巧的关键在于,在一个Canvas中使用其事件,来绘制矩形,注意这里选用Canvas是因为Canvas.Top和Canvas.Left是一个很好的定位方法。当用户想要动态绘制一个矩形的时候,用户按下鼠标左键(MouseLeftButtonDown事件),记录当前鼠标点击的Canvas坐标,然后鼠标移动(MouseMove事件)的时候再记录当前鼠标移动到的点位,由此动态生成一个Rectangle矩形框。这个矩形框就会跟随你鼠标移动变换大小,当鼠标左键弹起(MouseLeftButtonUp. 阅读全文
posted @ 2011-02-12 13:06 .NET架构 阅读(4016) 评论(2) 推荐(10)
摘要: 接上节所讲的,Silverlight可以加载外部的XML文件里面的内容,那么我们可不可以在外部XML里面配置一个WebService地址,并且以此加载这个地址来动态加载WebService呢?这样子就可以避免当WebService地址改变的时候,还要打开XAP包来重新修改WebService配置的地址了。 答案当然是可以的。在这里,我制作了一个实例。 在前面一节里面,我们讲到了使用WebClient来下载Silverlight程序外部的XML文件内容。在本节中,我们重点需要讲解一下如何使用反射来动态生成WebService代理类。关键代码如下: public void InitializeS. 阅读全文
posted @ 2011-02-10 14:53 .NET架构 阅读(4997) 评论(9) 推荐(5)
摘要: 使用WebClient读取XAP包同目录下的XML文件 我们想要读取XAP包下面的XML文件,需要将此XML文件放在加载XAP包的网页的目录中去,然后使用URI方式读取此URL方式下的XML文件。 首先使用WebClient来异步下载此URL方式的XML文件,然后使用XmlReader来读取此XML文件的数据内容。 阅读全文
posted @ 2011-02-07 00:03 .NET架构 阅读(6331) 评论(15) 推荐(13)
上一页 1 ··· 3 4 5 6 7 8 下一页