随笔分类 -  SilverLight

SilverLight,也即银光
摘要:C#读写者线程(用AutoResetEvent实现同步) 1. AutoResetEvent简介 通知正在等待的线程已发生事件。无法继承此类。 常用方法简介: AutoResetEvent(bool initialState):构造函数,用一个指示是否将初始状态设置为终止的布尔值初始化该类的新实例。 false:无信号,子线程的WaitOne方法不会被自动调用 true:有信号,子线程的WaitOne方法会被自动调用 public bool Reset ():将事件状态设置为非终止状态,导致线程阻止;如果该操作成功,则返回true;否则,返回false。 public bool Set... 阅读全文
posted @ 2012-10-16 11:34 天神一 阅读(3417) 评论(0) 推荐(1)
摘要:要在MVVM架构下实现模式窗口(Modal Dialogs),首先,我们需要实现怎么显示模式窗口。幸运的是,不管是SilverLight3还是SilverLight4都提供了ChildWindow。当然,我们也可以使用第三方控件来实现。但是最重要的问题是怎么在MVVM架构中去实现模式窗口,即怎么在ViewMode中实现,同时要实现View层和ViewModel的松耦性,另外依照MVVM架构思想,ViewModel层不必知道View的样式,所以我们必须需要一个接口,例如下图从上图可以知道必须定义一个属性DialogResult,其作用就是确定View层上确定或者取消按钮是否被点击。还必须定义两个 阅读全文
posted @ 2011-01-05 20:41 天神一 阅读(12083) 评论(30) 推荐(11)
摘要:大家在使用Silverlight开发的过程中,一定遇到过集合ListT、ObservableCollectionT和接口INotifyPropertyChanged,特别是集合ListT、ObservableCollectionT会经常遇到,但是大家有没有想到过他们之间的区别吗?大家一定知道在引用WCF的时候,系统默认使用的集合类型为ObservableCollectionT。  那么下面我就简单的介绍一下他们三者之间的异同之处。  ListT  ListT代表的是强类型的Ojbect集合,可以通过索引访问并且提供了查找、排序以及操作此集合的方法。ListT基本 阅读全文
posted @ 2010-12-26 17:18 天神一 阅读(6148) 评论(9) 推荐(8)
摘要:图1 View、ViewModel、Model之间的关系  在SilverLight或者WPF开发中,为什么要用MVVM架构  使用MVVM架构最大的好处是:开发人员在写程序的时候不需要做UI,而设计人员可以使用Microsoft Expression Blend 4+设计全部的UI并且不需要写任何代码。  主要的好处如下:  1、设计人员可以用设计工具很容易的设计UI,而且不需要写任何代码  2、你可以更好的设计UI,而且可以让即使不是开发人员使用。  3、可以先设计UI或者与开发同时设计。  4、当UI全部改变时,代码可以不改变。  为了达到以上要求。当你设计UI时,后台不能有任何代码。并 阅读全文
posted @ 2010-12-24 20:20 天神一 阅读(34595) 评论(16) 推荐(13)
摘要:在使用MVVM架构时,我们会遇到各种各样的问题  其中一个很常见的问题就是如何在ViewModel层处理UI事件时在后台代码文件中不写任何代码。  在我这个例子中实现的是取得鼠标移动时的位置。  我的解决方法如下:  1、通过一个Behavior 取得关联对象的EventArgs,代码如下[代码]  2、写一个类,包含的属性有事件源、EventArgs和对象,代码如下[代码]  3、为对象添加Behavior  在我的这个例子中,我对Rectangle添加新建的类ExtendedInvokeCommandAction(即Behavior)  4、在ViewModel层把这个Behavior绑定 阅读全文
posted @ 2010-12-18 20:29 天神一 阅读(4082) 评论(3) 推荐(5)
摘要:在开发Silverlight项目时,如果使用了MVVM架构时,可以实现业务逻辑与界面的完全分离。事件可以通过实现接口ICommand达到效果,比如:Button控件,如果要实现单击效果时,可以通过绑定Command即可。  但是如果需要实现鼠标离开Button事件怎么实现呢,就这是今天需要讨论的问题=》多事件实现  项目架构如下图:    我今天主要用Button做实验,来实现Button控件的单击事件和鼠标离开事件。这在非MVVM架构下非常容易实现。但是在MVVM架构,我们需要引用System.Windows.Interactivity.dll,此动态库存放的位置为C:\Program Fi 阅读全文
posted @ 2010-12-08 20:12 天神一 阅读(3052) 评论(2) 推荐(5)
摘要:在有一些项目中,UI界面上的控件有时是在程序运行时才生成的。这样的功能在MVVM中也很容易实现。并且可以通过按钮取得其值。  本实例主要实现程序运行时,在界面上生成四个控件,两个TextBox和两个TextBlock.并且点击按钮时,弹出TextBox中的值。如下图效果  实现方法分以下步骤  第一步:新建一个SivlerLight应用程序,命名为AutoCreatControl  第二步:新建一个ViewModel层,工程名为ViewModel  整个项目结构如下图    通过上面的项目结构图,大家知道需要新建什么文件了  第三步:在工程ViewModel新建一个文件夹ViewModel,并 阅读全文
posted @ 2010-12-08 18:49 天神一 阅读(2666) 评论(4) 推荐(2)
摘要:这篇文章主要展示在Silverlight4的应用程序中,用MVVM模式【编者注:如果你对MVVM模式不太理解,请先去熟悉一下关于这方面的资料】怎么打开一个子窗体(Child Window),怎么向子窗体传值,以及怎么从子窗体返回值到主窗体等等  我使用的方法不是严格意义上的MVVM模式,因为我实际上在ViewModel中实例化了子窗体,这通常很不方便的。但是在Google上找了好长时间,仅仅找到了打开子窗体的工具包的向导,我认为最好的方法就是亲自去实现它。我期望最方便且有严格意义上的MVVM的解决方案在SilverLight5中能够实现。  本篇文章只仅仅是一个概念的验证,并且是基于一个最简单 阅读全文
posted @ 2010-12-08 14:03 天神一 阅读(4486) 评论(0) 推荐(3)
摘要:今天我谈的是SilverLight3的ChildWindow的标题问题,我想在ChildWindow标题前面加上一个图片,比如logo,如下图的效果,标题前面有一个图标。   要实现以上的效果,有两种方法可以实现。 1、由于ChildWindow的标题(Title)可以设置为任何对象。这样,您可以创建包含文本、图形和动画的复杂标题。如果该对象不具有直观表示形式,则 ToString 方法返回的对象... 阅读全文
posted @ 2010-10-31 15:37 天神一 阅读(973) 评论(1) 推荐(1)
摘要:Silverlight3及以前的版本的DataGrid,ListBox,TreeView的垂直滚动条都是不支持鼠标滑轮的,不知道SL4支持不?本文通过扩展DataGrid来支持鼠标滑轮。使DataGrid的使用效果更好,使用户使用起来更方便 以下是扩展的方法创建Silverlight 工程使用Visual Studio 2008 and创建一个新的 Silverlight 3 工程.命名为 Mou... 阅读全文
posted @ 2010-10-28 13:14 天神一 阅读(2219) 评论(2) 推荐(1)
摘要:大家一定遇到这样的情况,想改变一下SL的DataPager的显示信息,比如希望分页控件上显示数据的总数。那么就需要扩展一下DataPager控件即可。  其实扩展DataPager很简单,只要获取到DataPager控件上的元素,然后再改变元素上数据。比如DataPager控件上显示“总页数”的元素是一个TextBlock,那么可以通过方法GetTemplateChild获... 阅读全文
posted @ 2010-10-26 19:04 天神一 阅读(1677) 评论(0) 推荐(1)
摘要:今天实现了用IsolatedStorage新建XML文件,并且使用LINQ查询XML,虽然以前也用到了IsolatedStorage,但是当时没有保存为文件,而且直接使用的键/值,文件会自动创建。今天做的项目一个目录数,数据量特别大,每次形成TreeView时,时间比较长,另外这些数据基本上不会修改,所以想到把数据保存到本地,然后从本地读取数据,这样就会很快。下面我就分享一下我的代码代码Code ... 阅读全文
posted @ 2010-10-20 10:50 天神一 阅读(1903) 评论(0) 推荐(0)
摘要: 现在做一个项目,在数据库和表名以及列名都不确定的情况下,返回查询的数据集。这在ASP.NET或者C/S模式很容易实现。但是在现有的SL+WCF技术下是不能实现的,首先返回值就不好确定,WCF的返回值类型必须是确定的。比较返回值为Object类型就不可以。而且返回DataTable和DataSet又不可以。在客户接收不到数据,返回的数据类型为Object。那么我们可以通过普通的方式取得数据集,然后把数据集转换为XML格式的字符串,然后在客户端把字符串解析为类型DataSet数据集。 阅读全文
posted @ 2010-10-15 20:10 天神一 阅读(3644) 评论(3) 推荐(2)
摘要:最近做一个简单的树型结构,需要做成用户控件,但是TreeView已经形成之后,在其它地方调用这个用户控件时,本来TreeView应该有的事件却没有了,比如Unchecked,Checked事件,在下面的XMAL代码段中没有这些事件,其实可以在用户控件中实现这些事件,但是有些东西不能在用户控件中实现,只能在调用方实现。[代码]经过一个小时的摸索,终于搞定了,实现方法如下 1、首先在用户控件中声明需要... 阅读全文
posted @ 2010-09-02 14:03 天神一 阅读(2091) 评论(0) 推荐(0)
摘要:网络上设置Silverlight动态访问WCF服务,大多是抛开ServiceReferences.ClientConfig文件,完全以代码方式实现对WCF的动态访问。但这种做法存在实现复杂和局限性。在实际使用的过程中,出于安全等原因,很多时候需要通过自定义绑定,设置很多内容。通过VS中的向导生成Silverlight对WCF的访问,能够自动识别这些内容,并自动生成ServiceReferences... 阅读全文
posted @ 2010-08-22 12:04 天神一 阅读(585) 评论(3) 推荐(1)
摘要:今天做一个项目,一个省份的地图,在鼠标经过每个城市时,相对应的城市区域变颜色,并且弹出一个对话框。此对话框的左下角还有一个尖状的图形指向该城市(不好意思,我的电脑不能上传图片,大家可以看一下代码就可以了)XAML代码(需要把地图上的每个城市区域变成Path才可以自如的控制每个区域的颜色(也可以不生成PATH,可以每个区域用几张不同的图片,但是这样很麻烦),其实生成PATH很简单,找一个完整的地图图... 阅读全文
posted @ 2010-08-21 17:43 天神一 阅读(4084) 评论(2) 推荐(1)
摘要:在我们开发SilverLight时,在加载大的数据时,需要很长时间,为了给用户一个好的印象,我们给一个正在加载的提示,下面我就把简单的程序贴出来,希望对大家有帮助waiting.xaml<UserControl x:Class="Example.Portal.Common.Waiting" xmlns="http://schemas.microsoft.com/winfx/2006/xam... 阅读全文
posted @ 2010-08-17 17:51 天神一 阅读(4203) 评论(3) 推荐(1)