博客园  :: 新随笔  :: 管理

2011年1月19日

摘要: 1.尽量使用代码控制; 2.尽可能早的计划好所有的用户控件;这样可以提前预期控件之间相互运作情况,便于整合项目; 3.尝试分割不同功能到不同的用户控件; 现在无论国内国外,开发队伍通常来说都是3个人以上,分割不同功能到不同的用户控件,可以减少相互之间的冲突和影响; 另外,在测试的时候发现问题,对于不同的小功能区域,方便Bug定位;另外也方便功能模块的再利用。 这个是现在Web项目开发的一个常用规则。 4.尽量少用Loaded事件; 5.初始化的问题; 在每个用户控件中,需要创建Initialize和Deinitialize公共方法。 在实际项目中,你可以把Event Handlers或者必须要 阅读全文

posted @ 2011-01-19 20:47 slwf7man 阅读(160) 评论(0) 推荐(0)

摘要: 今天做一个项目,一个省份的地图,在鼠标经过每个城市时,相对应的城市区域变颜色,并且弹出一个对话框。此对话框的左下角还有一个尖状的图形指向该城市(不好意思,我的电脑不能上传图片,大家可以看一下代码就可以了)XAML代码(需要把地图上的每个城市区域变成Path才可以自如的控制每个区域的颜色(也可以不生成PATH,可以每个区域用几张不同的图片,但是这样很麻烦),其实生成PATH很简单,找一个完整的地图图片,然后用BLEND中的钢笔沿着区域边描点就可以,可以在描点的过程中,新生成的PATH会覆盖边线,那你可以把PATH设置为透明的就可以了UserControlxmlns="http://schema 阅读全文

posted @ 2011-01-19 20:08 slwf7man 阅读(787) 评论(0) 推荐(0)

摘要: 在我们开发SilverLight时,在加载大的数据时,需要很长时间,为了给用户一个好的印象,我们给一个正在加载的提示,下面我就把简单的程序贴出来,希望对大家有帮助waiting.xamlUserControl x:Class="Example.Portal.Common.Waiting" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microso 阅读全文

posted @ 2011-01-19 20:04 slwf7man 阅读(476) 评论(1) 推荐(0)

摘要: 大家一定遇到这样的情况,想改变一下SL的DataPager的显示信息,比如希望分页控件上显示数据的总数。那么就需要扩展一下DataPager控件即可。  其实扩展DataPager很简单,只要获取到DataPager控件上的元素,然后再改变元素上数据。比如DataPager控件上显示“总页数”的元素是一个TextBlock,那么可以通过方法GetTemplateChild获取到,参数是元素的名称。然后通过重写方法OnApplyTemplate即可,下面请看代码代码Code highlighting produced by Actipro CodeHighlighter (freeware)ht 阅读全文

posted @ 2011-01-19 20:01 slwf7man 阅读(300) 评论(0) 推荐(0)

摘要: Silverlight3及以前的版本的DataGrid,ListBox,TreeView的垂直滚动条都是不支持鼠标滑轮的,不知道SL4支持不?本文通过扩展DataGrid来支持鼠标滑轮。使DataGrid的使用效果更好,使用户使用起来更方便 以下是扩展的方法创建Silverlight 工程使用Visual Studio 2008 and创建一个新的 Silverlight 3 工程.命名为 MouseScroll.在Silverlight工程中新增一个类,命名为ScrollDataGrid.cs,让这个类继承SL3的DataGrid,代码如下public class ScollDataGrid 阅读全文

posted @ 2011-01-19 19:59 slwf7man 阅读(268) 评论(0) 推荐(0)

摘要: 今天我谈的是SilverLight3的ChildWindow的标题问题,我想在ChildWindow标题前面加上一个图片,比如logo,如下图的效果,标题前面有一个图标。   要实现以上的效果,有两种方法可以实现。 1、由于ChildWindow的标题(Title)可以设置为任何对象。这样,您可以创建包含文本、图形和动画的复杂标题。如果该对象不具有直观表示形式,则 ToString 方法返回的对象的字符串表示形式将显示在标题栏中,其实Title有这种功能,还是主要归功于显示标题的元素ContentControl类。ContentControl类表示包含单项内容的控件。像Button,Check 阅读全文

posted @ 2011-01-19 19:58 slwf7man 阅读(185) 评论(0) 推荐(0)

摘要: 首先Session是运行在服务器上的,而Silverlight运行在客户端。因此在Silverlight中使用SESSION的说法并不准确,只因大家经常这样搜索才起这个名字。有两种方法实现Silverlight与Session的关联:方法一、通过WCF使用ASP.NET中的Session[因BasicHttpBinding不支持WCF中的Session,如使用WCF会话将报错 ]  首先:在web.config中system.serviceModel 下添加:    serviceHostingEnvironment aspNetCompatibilityEnabled="true"/ 阅读全文

posted @ 2011-01-19 19:56 slwf7man 阅读(168) 评论(0) 推荐(0)

摘要: 要在MVVM架构下实现模式窗口(Modal Dialogs),首先,我们需要实现怎么显示模式窗口。幸运的是,不管是SilverLight3还是SilverLight4都提供了ChildWindow。当然,我们也可以使用第三方控件来实现。但是最重要的问题是怎么在MVVM架构中去实现模式窗口,即怎么在ViewMode中实现,同时要实现View层和ViewModel的松耦性,另外依照MVVM架构思想,ViewModel层不必知道View的样式,所以我们必须需要一个接口,例如下图从上图可以知道必须定义一个属性DialogResult,其作用就是确定View层上确定或者取消按钮是否被点击。还必须定义两个 阅读全文

posted @ 2011-01-19 19:54 slwf7man 阅读(245) 评论(0) 推荐(0)

摘要: 图1 View、ViewModel、Model之间的关系  在SilverLight或者WPF开发中,为什么要用MVVM架构  使用MVVM架构最大的好处是:开发人员在写程序的时候不需要做UI,而设计人员可以使用Microsoft Expression Blend 4+设计全部的UI并且不需要写任何代码。  主要的好处如下:  1、设计人员可以用设计工具很容易的设计UI,而且不需要写任何代码  2、你可以更好的设计UI,而且可以让即使不是开发人员使用。  3、可以先设计UI或者与开发同时设计。  4、当UI全部改变时,代码可以不改变。  为了达到以上要求。当你设计UI时,后台不能有任何代码。并 阅读全文

posted @ 2011-01-19 19:53 slwf7man 阅读(224) 评论(0) 推荐(0)

摘要: 在使用MVVM架构时,我们会遇到各种各样的问题  其中一个很常见的问题就是如何在ViewModel层处理UI事件时在后台代码文件中不写任何代码。  在我这个例子中实现的是取得鼠标移动时的位置。  我的解决方法如下:  1、通过一个Behavior 取得关联对象的EventArgs,代码如下[代码]  2、写一个类,包含的属性有事件源、EventArgs和对象,代码如下[代码]  3、为对象添加Behavior  在我的这个例子中,我对Rectangle添加新建的类ExtendedInvokeCommandAction(即Behavior)  4、在ViewModel层把这个Behavior绑定 阅读全文

posted @ 2011-01-19 19:52 slwf7man 阅读(341) 评论(0) 推荐(0)

摘要: 在开发Silverlight项目时,如果使用了MVVM架构时,可以实现业务逻辑与界面的完全分离。事件可以通过实现接口ICommand达到效果,比如:Button控件,如果要实现单击效果时,可以通过绑定Command即可。  但是如果需要实现鼠标离开Button事件怎么实现呢,就这是今天需要讨论的问题=》多事件实现  项目架构如下图:    我今天主要用Button做实验,来实现Button控件的单击事件和鼠标离开事件。这在非MVVM架构下非常容易实现。但是在MVVM架构,我们需要引用System.Windows.Interactivity.dll,此动态库存放的位置为C:\Program Fi 阅读全文

posted @ 2011-01-19 19:51 slwf7man 阅读(256) 评论(0) 推荐(0)

摘要: 在有一些项目中,UI界面上的控件有时是在程序运行时才生成的。这样的功能在MVVM中也很容易实现。并且可以通过按钮取得其值。  本实例主要实现程序运行时,在界面上生成四个控件,两个TextBox和两个TextBlock.并且点击按钮时,弹出TextBox中的值。如下图效果  实现方法分以下步骤  第一步:新建一个SivlerLight应用程序,命名为AutoCreatControl  第二步:新建一个ViewModel层,工程名为ViewModel  整个项目结构如下图    通过上面的项目结构图,大家知道需要新建什么文件了  第三步:在工程ViewModel新建一个文件夹ViewModel,并 阅读全文

posted @ 2011-01-19 19:50 slwf7man 阅读(244) 评论(0) 推荐(0)

摘要: 这篇文章主要展示在Silverlight4的应用程序中,用MVVM模式【编者注:如果你对MVVM模式不太理解,请先去熟悉一下关于这方面的资料】怎么打开一个子窗体(Child Window),怎么向子窗体传值,以及怎么从子窗体返回值到主窗体等等  我使用的方法不是严格意义上的MVVM模式,因为我实际上在ViewModel中实例化了子窗体,这通常很不方便的。但是在Google上找了好长时间,仅仅找到了打开子窗体的工具包的向导,我认为最好的方法就是亲自去实现它。我期望最方便且有严格意义上的MVVM的解决方案在SilverLight5中能够实现。  本篇文章只仅仅是一个概念的验证,并且是基于一个最简单 阅读全文

posted @ 2011-01-19 19:50 slwf7man 阅读(449) 评论(0) 推荐(0)

摘要: 什么是MVVM模式  MVVM(Model-View-ViewModel)是专为WPF和SilverLight设计的开发模式。它为程序员指定了一个开发准则,也就是开发出来的程序应该能达到更的单元测试、程序调试、易管理及程序的可读性。  View层的要实现零代码,也就是在UI的mainpage.xaml.cs中没有任何代码。也就是要达到以下要求:确定和取消的按钮不能在后台有click事件,没有form或者windows的Load逻辑代码,没有UI的binding的逻辑代码,没有UI的验证代码以及没有类型转换代码。 如果要达到MVVM模式的UI后台隐藏文件没有任何逻辑代码以及实现显示层和逻辑层的松 阅读全文

posted @ 2011-01-19 19:40 slwf7man 阅读(253) 评论(0) 推荐(0)

摘要: 大家在使用Silverlight开发的过程中,一定遇到过集合ListT、ObservableCollectionT和接口INotifyPropertyChanged,特别是集合ListT、ObservableCollectionT会经常遇到,但是大家有没有想到过他们之间的区别吗?大家一定知道在引用WCF的时候,系统默认使用的集合类型为ObservableCollectionT。  那么下面我就简单的介绍一下他们三者之间的异同之处。  ListT  ListT代表的是强类型的Ojbect集合,可以通过索引访问并且提供了查找、排序以及操作此集合的方法。ListT基本 阅读全文

posted @ 2011-01-19 19:26 slwf7man 阅读(330) 评论(0) 推荐(0)

摘要: 摘要Silverlight 2 Beta 2发布之后,在原来的Beta 1基础之上有了很多的改变。本文总结一下Silverlight 2 Beta1 和Beta 2之间的变化,以及升级Silverlight 2.0 Beta 1应用程序到Beta 2过程中可能会遇到的一些问题。 1.卸载原有的与Beta 1有关的一切组件 2.安装Beta 2相关组件 3.在打开原有的项目后,会出现如下提示对话框,提示你是否要升级到最近版本。 控件变化控件放在System.Windows.dll程序集中原来在System.Windows.Controls.dll中的控件在Beta 2中都放在了System.Wi 阅读全文

posted @ 2011-01-19 15:42 slwf7man 阅读(280) 评论(0) 推荐(0)

摘要: 概述Silverlight Steaming 是微软 Live 平台中的免费发布视频以及托管 Silverlight 应用的产品。今年 MIX08 大会上微软发布了 Silverlight Streaming 的 Beta 版本,Silverlight Streaming 主要有以下特点: 1. 高达 10G 的免费空间,只需要一个 Windows Live ID 就可以免费申请高达 10G 的存储空间。 2. 支持高达105M 的应用,单个应用或者视频的大小能够支持高达105M。 3. 支持高达 1.4M 的视频码流,在视频码流的支持上,Silverlight Streaming 也支持高达 阅读全文

posted @ 2011-01-19 15:38 slwf7man 阅读(168) 评论(0) 推荐(0)

摘要: 概述我们知道,在Silverlight 2中提供了丰富的网络通信API,包括支持SOAP服务、REST服务、基于HTTP通信、Socket通信等。本文我将通过几个示例来演示如何在Silverlight 2中应用Web Service实现文件上传和电子邮件发送。 使用Web Service上传文件我将通过一个示例来展示如何使用Web Service向服务器上传文件,首先创建Silverlight项目,并在Web测试项目中添加一个ASP.NET Web Service文件。现在来实现相关的WebMethod,在此方法中,将会接收两个参数:字节数组和文件扩展名,并会在服务器上创建文件,如下代码所示: 阅读全文

posted @ 2011-01-19 15:36 slwf7man 阅读(156) 评论(0) 推荐(0)

摘要: 概述Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。本文为系列第一篇创建一个基本的Silverlight 2应用,不能免俗,从最简单的Hello Word 开始。建立项目安装完Silverlight 2 Beta 1之后打开VS2008,打开新建项目对话 阅读全文

posted @ 2011-01-19 15:10 slwf7man 阅读(99) 评论(0) 推荐(0)

摘要: 概述Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, Ironpython,对JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步学Silverlight 2系列》文章带您快速进入Silverlight 2开发。本文为系列文章第二篇学习几个基本的控件。在Silverlight 2中,提供了大量的控件,包括Button、、Calendar 、CheckBox 、DataGrid 、DatePicker 、Grid 阅读全文

posted @ 2011-01-19 15:09 slwf7man 阅读(108) 评论(0) 推荐(0)