摘要: 在前面的Silverlight入门系列文章中穿插讲了一些MVVM模式系列文章,MVVM模式貌似简单,其实要把界面逻辑抽象出来还是很不容易,像《TreeView真正实现MVVM模式和Expanded发生时异步动态加载子节点(WCFRiaService)》就不是这么简单,有的童鞋像feiyang还要实现Treeview的展开状态持久化和自动恢复,配合MVVM实现不容易。所以,MVVM的核心概念理解不难,在具体使用上则问题多多。今天要讲的话题就是一个MVVM使用上的具体问题: Silverlight中的Storyboard动画是否可以在ViewModel中来控制?为什么想在ViewModel中控制S 阅读全文
posted @ 2011-09-07 16:12 Areas 阅读(675) 评论(0) 推荐(0)
摘要: [Silverlight入门系列]使用MVVM模式(9): 想在ViewModel中控制Storyboard动画?(2011-09-07 16:12)[Silverlight入门系列]使用MVVM模式(8):ViewModel进一步分离出Services(2011-09-07 15:29)[Silverlight入门系列]使用MVVM模式(7):ViewModel的INotifyPropertyChanged接口实现(2011-09-07 15:28)[Silverlight入门系列]使用MVVM模式(6):使用Behavior(2011-09-07 15:25)[Silverlight入门系 阅读全文
posted @ 2011-09-07 15:38 Areas 阅读(326) 评论(0) 推荐(1)
摘要: Siverlight5新功能/改进总结参考资料:The Big List of What’s New or Improved in Silverlight 5以下总结包括大家关心的Silverlight5的绝大多数新功能或改进,特别是Silverlight5 RC中的新玩意。数据绑定相关 ICustomTypeProvider 自定义标记扩展(Custom Markup Extensions) Ancestor RelativeSource 绑定 隐式 Data Templates 绑定到Style的Setter DataContextChanged 事件 UpdateSourc... 阅读全文
posted @ 2011-09-07 15:30 Areas 阅读(260) 评论(0) 推荐(0)
摘要: 在上一讲中介绍了MVVM的核心概念,运用MVVM模式可以分离视图、视图逻辑和模型,提高可测试性和可维护性等,但如果一个视图比较复杂,仔细Review一下其ViewModel你会发现非常庞大臃肿复杂,而且部分代码逻辑不可重用,例如另外一个ViewModel想重用其中的部分代码逻辑而不是整个重用,就没有办法。所以最好进一步分离ViewModel的关注点,分离出Services实现IServcie接口,让Service去做一些可重用的工作,分离出一些可重用的操作,这样其他的ViewModel就可以用Service来重用ViewModel的部分逻辑了。原来的ViewModel关注点可以聚焦在用户界面交 阅读全文
posted @ 2011-09-07 15:29 Areas 阅读(398) 评论(0) 推荐(0)
摘要: 本文说说ViewModel的这个INotifyPropertyChanged接口可以用来做啥?举例1:我有个TabControl,里面放了很多View,每个由ViewModel控制,我想是想TabSelectionChanged就打开相应的ViewModel,怎么做?解答:用ViewModel的INotifyPropertyChanged接口实现,因为TabItem作为一个选择器就有 IsSelected属性,把这个属性绑定到ViewModel的IsSelected字段,然后这个字段改变的时候用INotifyPropertyChanged接口实现通知即可。整个流程用MVVM实现非常整洁。Xam 阅读全文
posted @ 2011-09-07 15:28 Areas 阅读(423) 评论(0) 推荐(0)
摘要: Behavior把一些常用的行为封装成可重复使用的组件(Component),在理想状况下,Designer(设计师)或domain expert(特定领域的专家,例如财会人员、HR人员、或MIS)甚至可以完全不需要具备程序设计的观念,只需要了解基础的事件(Event)观念,就可以顺利的开发出一套系统,若需要实现特定的功能时,可商请developere为他们开发所需要的Behavior,designer只需要取得这些Behavior并使用即可。例如,界面设计人员可以使用Expression Blend把一个Behavior拖到一个界面元素上,比如右键点击以后启动一段动画这个行为,这个界面元素就 阅读全文
posted @ 2011-09-07 15:25 Areas 阅读(436) 评论(0) 推荐(0)
摘要: 在上一篇写了Model的INotifyPropertyChanged接口实现,在Prism中有一个NotificationObject自动实现了这个接口,位于Microsoft.Practices.Prism.ViewModel命名空间下。也就是说,Prism推荐ViewModel继承这个NotificationObject类来自动实现INotifyPropertyChanged接口。看看NotificationObject都有啥:1 public abstract class NotificationObject : INotifyPropertyChanged2 {3 prot... 阅读全文
posted @ 2011-09-07 15:21 Areas 阅读(502) 评论(0) 推荐(0)
摘要: 数据验证(Validation)是界面程序的常见需求,例如使用正则表达式验证用户输入的Email地址是否合法,然后在界面给出错误提示信息。在Sivlerlight的MVVM模式中,我们在Model和ViewModel可以做Validation,然后需要把Model和ViewModel的Validation结果和错误信息通知视图(View)。在WPF中,我们使用IDataErrorInfo,在Silverlight4中,建议使用INotifyDataErrorInfo。关于这个接口怎么使用,如何实现ErrorProvider的功能,如何做DataForm的Validatio,请参考我的旧一篇。I 阅读全文
posted @ 2011-09-07 15:21 Areas 阅读(583) 评论(0) 推荐(0)
摘要: INotifyCollectionChanged在上一篇讲了《[Silverlight入门系列]使用MVVM模式(1):MVVM核心概念 》,今天讲一下集合Model。所谓集合Model就是给ItemsControl,如DataGrid,Combobox等绑定的集合数据模型。另外,通过定制ItemsControl的数据模板(DataTemplate),还可以控制集合对象中每一项的显示。实现很简单,但数据源集合对象必须继承IEnumerable接口,为了让目标属性与数据源集合的更新(不但包括元素的修改,还包括元素的增加和删除)保持同步,数据源集合还必须实现INotifyPropertyChang 阅读全文
posted @ 2011-09-07 15:20 Areas 阅读(450) 评论(0) 推荐(0)
摘要: 当客户端绑定一个数据模型以后,数据模型变化以后可以自动通知客户端更新界面显示,这就是INotifyPropertyChanged接口要做的工作。INotifyPropertyChanged接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。例如,考虑一个带有名为FirstName属性的Person对象。若要提供一般性属性更改通知,则Person类型实现INotifyPropertyChanged接口并在FirstName更改时引发PropertyChanged事件。若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列功能:实现INotifyPropertyCha 阅读全文
posted @ 2011-09-07 15:20 Areas 阅读(361) 评论(0) 推荐(0)
摘要: 编辑器加载中...MVVM模式是Model、View、ViewModel的简称,最早出现在WPF,现在Silverlight中也使用该模式,MVVM模式是对MVC模式的变种。哪儿变了?我认为MVVM和MVC的主要变化在于MVVM更适合于XAML。MVVM模式和MVC模式一样,主要目的是分离视图(View)和模型(Model),有几大好处1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model不可以不变,当Model变化的时候View也可以不变。2. 可重用性。你可以把一些视图逻辑放在一 阅读全文
posted @ 2011-09-07 15:19 Areas 阅读(1029) 评论(0) 推荐(0)
摘要: Silverlight入门:第一部分 - 开发工具与程序入门Silverlight入门:第二部分 - 定义界面布局和导航Silverlight入门:第三部分 - 数据访问Silverlight入门:第四部分 - 数据绑定Silverlight入门:第五部分 - 整合其它控件Silverlight入门:第六部分 - 美化用户界面的样式与模板Silverlight入门:第七部分 - 脱离浏览器的经验 阅读全文
posted @ 2011-09-07 14:16 Areas 阅读(458) 评论(0) 推荐(0)
摘要: 我们已经有了一个功能完备但还可以锦上添花的应用程序。让我们使搜索结 果模板更漂亮一些。我们准备在Search.xaml的数据模板中为ItemControls做一 些修改。这些修改就像我们已经使用过的编辑模板功能一样可以在Blend中完成。应用 了新的用户界面样式看起来会像这样:我们可以注意到模板风格更精致了,却没有影响到原来的代码。虽然最后它 将会输出大量的代码,但是我可以给你指出最终项目中的样式的位置。应用样式和模板与绑定数据和模板很相像。如果我们观察一下ScrollViewer 的状态:1 <ScrollViewer Style="{StaticResource scrol 阅读全文
posted @ 2011-09-07 14:14 Areas 阅读(298) 评论(0) 推荐(0)
摘要: 在本系列的最后一节中,我们准备让应用程序脱离浏览器运行。这会比你想 象的容易很多。创建清单在Visual Studio中右击Silverlight应用程序项目,并且选择属性,你将会 看到一个弹出的对话框——注意有关脱离浏览器设置的多选框:当你点击以后需要完成一些选项:为你的应用程序设置安装或脱离浏览器运行时的可视化信息是非常重要的。* 窗体标题——显示在应用程序的窗体标签中* 宽/高——应用程序启动时的初始宽度和高度* 快捷方式名称——用于在桌面和开始菜单中显示的名称* 下载说明——应用程序的说明* 图标——必须是PNG格式同时还必须在项目中标记为Content在你完成这些配置以后,让我们为你 阅读全文
posted @ 2011-09-07 14:14 Areas 阅读(402) 评论(0) 推荐(0)
摘要: 在之前的第三部分中,我们做了很多工作来获取公共Web服务返回的数据并让 其显示在控件中。我们已经用过了DataGrid控件,但它并不是我们真正想要的用 户界面,所以让我们自己来定义一个。为此,我们需要一个ItemsControl和一个 DataTemplate。这将让我们学习到XAML的绑定语法,以及如何利用更强大的数据 绑定信息。在开始之前——先删除DataGrid在开始之 前,让我们先删除并且只删除DataGrid,我们也不再需要它的程序集引用以及 xmlns,所以也可以大胆删除它们。把DataGrid替换成ItemsControl,像 是这样:1 <ItemsControl x:N 阅读全文
posted @ 2011-09-07 14:13 Areas 阅读(373) 评论(0) 推荐(0)
摘要: 在之前的章节中,我们优化了数据绑定,并将数据保存在了我们的独立存储 区域。现在让我们整合一些其它的控件使得用户体验更好一些。自动完成输入框记得每次搜索以后,我们都将搜索条件保存为历史数据吗?让我们通过在他 们输入时提供搜索历史来让他们使用更方便。我们准备用Silverlight工具包中 的一个控件——自动完成输入框来做这件事。要做到这点,我们需要添加一个到System.Windows.Controls.Input的程序集 引用,然后在你的Search.xaml文件中添加一个xmlns:1xmlns:input="clr- namespace:System.Windows.Contro 阅读全文
posted @ 2011-09-07 14:13 Areas 阅读(273) 评论(0) 推荐(0)
摘要: 现在我们已经有了一个基础布局,同时也在上面放了一些控件,接下来让我 们开始获取数据。因为我们想要搜索Twitter上的内容,所以我们需要充分使用 他们提供的Web服务API。在继续之前,我要先说明在本次的应用程序中,我们不 会自己建立一个数据库或其它数据源,但是我要指出的是你有很多种方式可以通 过Silverlight访问数据。数据访问选项对于在Silverlight中访问数据,初学者的误解之一就是他们在Silverlight 中寻找ADO.NET类库。别找了,找不到的。记住,Silverlight是部署在互联网上 的客户端技术,你不能要求一个浏览器插件去直接访问你的数据库……除非你想 把数据 阅读全文
posted @ 2011-09-07 14:12 Areas 阅读(379) 评论(0) 推荐(0)
摘要: 理解XAML应用程序中的布局管理是开发成功Silverlight应用的一个重要方面 。对于大多数来自Web领域的人来说,如果你对CSS不熟悉,那么这将成为你面临 的最大的挑战之一。理解布局选项Silverlight提供了一个灵活 的系统用于在页面上布置界面元素。布局模型同时支持绝对定位和相对定位的布 局风格。虽然提供了多种布局控件,但最常用的是:CanvasStackPanelGrid让我们逐个看看当把元素放在其中的时 候,它们是如何工作的。我们将使用一个简单的按钮元素来演示。我们使用本系 列第一部分创建的项目,并在Home.xaml页面作简单的演示。CanvasCanvas是最基础的布局控件 阅读全文
posted @ 2011-09-07 14:11 Areas 阅读(517) 评论(1) 推荐(0)
摘要: 开发工具当然了,不管做任何开发,你都只需要一个文档编辑器和一个编译器。但你 没有任何理由不使用世界级的开发工具。所以我将在这里推荐给你一套开发工具 ,让你可以更加简单快捷地构建Silverlight应用程序。注意这些都不是必须的 (重申一遍,如果你是发烧级别的开发人员,那么你只需要一个记事本和一个编 译器 :-))。虽然它们不都是免费的,但是我还是极力推荐它们,不只是因为我 效力于微软,而是我真的觉得它们是世界上最棒的开发工具。Visual Studio 2008你要确定你已经有了Visual Studio 2008,安装Silverlight工具之前你还需 要装上SP1补丁,所以先确认一下你 阅读全文
posted @ 2011-09-07 14:09 Areas 阅读(540) 评论(0) 推荐(0)
摘要: 建立可扩展的silverlight应用框架 step-7 final(2011-09-07 14:04)建立可扩展的silverlight 应用框架 step-6:整理导航模块“LeftNav”(2011-09-07 14:03)建立可扩展的silverlight应用框架 step-5:整理Module(2011-09-07 14:02)建立可扩展的silverlight应用框架 step-4(2011-09-07 14:01)建立可扩展的silverlight应用框架 step-3(2011-09-07 14:00)建立可扩展的silverlight应用框架 step-2(2011-09-0 阅读全文
posted @ 2011-09-07 14:05 Areas 阅读(349) 评论(0) 推荐(0)
摘要: 前六节的文章已经完全的记录这个项目的开发过程,其中第5节和第6节相隔的时间比较长 ,这期间我翻阅了大量的Prism官方文档以及网络上的资料,其实第6节的内容是很深、很连 贯的,以至于无法在一节里写完所以我只是记录了如何实现,少了为什么这样做。这里打算 另开一张详细的记录Prism框架应用。“OperatingTable”这个项目目前已经完成了。预览地址:http://lab.nasawz.com/请打开一些流量分析的软件来观察一下。所有的xap文件都是按需加载。并且xap文件可以通过后台来管理,动态的添加,生成相应 的配置文件。做这个项目的目的也主要是以实现为导向的学习一下Prism这个框架。 阅读全文
posted @ 2011-09-07 14:04 Areas 阅读(181) 评论(0) 推荐(0)
摘要: 首先说一下我想要实现的效果。我希望在左侧的导航点击了以后右侧的主体部分发声变化。之前我在LeftNav模块用的控件是ToggleButton并为其制作了样式。本来想的是自己根据 ToggleButton作为基础自己在做一个复合控件出来。不过这里做导航的话,ListBox会更加的 适合些。ListBox的样式制作和之前的ToggleButton样式制作大同小异,都是一个原则:各个 VisualStateGroup中的视图状态是可以共存的,VisualStateGroup内部的视图状态只能同时 出现一个,尽量不要在多个VisualStateGroup同时改变同一个元素的属性。下来导航模块“Left 阅读全文
posted @ 2011-09-07 14:03 Areas 阅读(413) 评论(0) 推荐(0)
摘要: 在第三节里边,建立了一个最简单的Module。这里要对其再进行整理。之前我写过一篇《 简练的视图模型 ViewModel》这里就讲述了一个最最基本的运用视图与模型的例子。用模型 来控制视图的呈现在很早的时候就提出来了。当然Prism这个框架也包括了这一点。这里就要 为Module加入Model。这里记录下整理步骤1.在Module项目中新建立一个Models文件夹,用来存放数据模型。在文件下新建立一个 HelloPrismModel类继承自INotifyPropertyChanged。在构造函数中将视图作为参数传入将视图和模型相绑定。01 public class HelloPrismMode 阅读全文
posted @ 2011-09-07 14:02 Areas 阅读(276) 评论(0) 推荐(0)
摘要: 通过外部配置文件加载模块module在上一节中为项目引入了“Prism”框架,并建立了一个Hello Prism做测试。这里要把项 目好好的整理一下。使其更加的合理和具有可扩展性。我的目的是,在左侧的导航栏目里点击按钮,相应的右侧的主体部分显示不同的内容。这 些内容都是来自外部加载进来的xap文件。我可以上传管理自己的xap文件。这里来看一下我的整理过程首先将布局划分为两个部分:“LeftNavRegion”、“MainRegion”,一个来承放导航, 一个来承放主体内容。接下来就要加载相关的Module了。关于Module的加载,园子里的包包同学已经对他做了很详细的分析。具体请看《Prism 阅读全文
posted @ 2011-09-07 14:01 Areas 阅读(288) 评论(0) 推荐(0)
摘要: 应用架构前边两章都是将的UI方面的知识。这里UI结构已经有了,现在要引人一个开发架构: Composite “Prism”。前期准备工作首先在项目主页下载最新版本的Composite。http://compositewpf.codeplex.com/http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318- ad1b-cbc2ea453f40&displaylang=en我这里下载的是《Composite Application Guidance for WPF and Silverlight 阅读全文
posted @ 2011-09-07 14:00 Areas 阅读(271) 评论(0) 推荐(0)
摘要: 接上一节,这里我要在左侧添加导航按钮。先看看需要实现的效果这里是我的office 2010的截图我想要模拟这个效果。因为普通按钮和,类似TapControl是混排在一起的,不太适合用TapControl。所以这里我 选择了ToggleButton。所以本节主要就是制作ToggleButton的样式。其实制作样式并不复杂,只要理解好视图状态这个感念以及你现在所要做样式的控件结构 基本就没什么问题了。我想大多数朋友都是Button控件制作过了样式。 他的视图状态相对来说比较简单。这里看一下button和ToggleButton在我之前的文章里有一篇:“VisualState“视图状态”使用心得”. 阅读全文
posted @ 2011-09-07 13:59 Areas 阅读(319) 评论(0) 推荐(0)
摘要: “本文适合silverlight界面设计师参考,程序开发人员最好也了解一下”首先来看一下需要实现的效果这里我主要使用Grid来布局,把界面分为了三部分,头、左部、右部好整体了解了一下布局,这里我来分布讲解。之所以使用Grid这个布局控件是因为他能根据当前的浏览器的大小做自适应布局。如图:下来一 步 准备一些需要用到的图片素材,现在做界面不一定都是要矢量元素,在合适的地方使用合 适的素材最好。这里是我准备的一些小图片。建立项 目,在项目中建立一个assets的文件夹,把项目中用到的素材分类放好。调整 MainPage的大小为800*600在舞台上新建立一个Border容器,在其内部放置一个Gri 阅读全文
posted @ 2011-09-07 13:58 Areas 阅读(289) 评论(0) 推荐(0)
摘要: RIA技术选型2008年,中国人寿养老保险公司提出开发面向企业客户的养老金精算咨询系统 (PACS),但由于养老金咨询中的方案数据采集与精算过程非常复杂,使用传统 B/S架构很难实现。由于多年来的RIA开发经历,作为项目经理的我提出在此项目 中尝试使用RIA技术进行开发,以到达客户友好性与易用性的目的。微软发布一年 的Silverlight引起了项目组的注意,由于企业B/S开发的两大阵营,一个是Java ,另一个是.NET平台。针对主流RIA技术笔者进行了对比,当时Java平台的JavaFX 仍然处于beta阶段,而在此前笔者已经在一些项目中运用了ExtJS等通过JS实现的 类RIA应用,但实 阅读全文
posted @ 2011-09-07 13:55 Areas 阅读(359) 评论(0) 推荐(0)
摘要: Silverlight 应用程序模型提供以下功能来供托管应用程序使用:一个激活系统,它使得 Silverlight 插件能够下载您的应用程序在启动时需 要的应用程序包和任何外部库程序集。Application 类,该类封装基于 Silverlight 的应用程序通常要求的服务, 例如生命周期事件通知和 Silverlight 插件的接口。应用程序扩展性系统,此系统封装某些应用程序需要的其他服务,例如,自定 义的数据访问层。资源管理系统,这包括 URI 引用和回退机制、按需资源加载、样式和模板共 享以及全球化支持。通过这些功能,您可以实现在启动时间与资源可用性之间提供很好平衡的、构 造良好的应用 阅读全文
posted @ 2011-09-07 13:52 Areas 阅读(225) 评论(0) 推荐(0)
摘要: 大多数基于 Silverlight 的应用程序以托管代码编写并充分利用 Silverlight 应用程序模型。但是,您可以选择使用简化的编程模型。Silverlight 为应用程序开发提供以下两个截然不同的模型:Silverlight 的托管 API,它使用在 Silverlight 的公共语言运行时 (CLR) 上运行的代码。可以将托管 API 用于已编译的语言(如 Visual Basic 和 C#) 或动态语言(如 IronPython 和 IronRuby)。Silverlight 的 JavaScript API,它使用由浏览器解释的 JavaScript 代码 。这些编程模型截然不 阅读全文
posted @ 2011-09-07 13:51 Areas 阅读(170) 评论(0) 推荐(0)
摘要: 代码隐藏是一个术语,用于描述在为某一应用程序进行标记编译时与 XAML 页 的分部类联接的代码。本主题描述针对代码隐藏类的要求、在代码隐藏中定义的 事件处理程序的要求以及与代码隐藏相关的机制(例如 InitializeComponent 方 法)的用途。一般要求*如果某一托管应用程序的 XAML 页进行了标记编译(Page 生成操作,且 MSBuild:MarkupCompilePass1 的值为“自定义工具”),则该页上的根元素应声 明一个 x:Class。作为回退,可能仅限代码隐藏文件(具有生成操作 Compile 的 DependentUpon 文件);请参见下一节中的说明。代码隐藏和分 阅读全文
posted @ 2011-09-07 13:50 Areas 阅读(288) 评论(0) 推荐(0)
摘要: “托管扩展性框架(Managed Extensibility Framework,简称MEF),是微软 .NET框架下为提高应用和组件复用程度而推出的,用于使组件能够最大化的重用 。使用MEF能够使静态编译的.NET应用程序转换为动态组合,这将是创建可扩展应 用、可扩展框架和应用扩展的好途径。它将做为.NET Framework 4.0的组成部分 之一发布。现在,MEF也将被包含在Silverlight 4.0中。那么MEF是怎样工作的呢?简单分为三个步骤:Export (输出)Import (输入)Compose (组合)简短说一下MEF的工作原理,MEF的核心包括一个catalog和一个 阅读全文
posted @ 2011-09-07 13:46 Areas 阅读(265) 评论(0) 推荐(0)
摘要: 依赖属性(Dependency Property)和附加属性 (Attached Property)这两个算是很基础的知识都不是很记得了。写一写,当做 一下笔记吧。CLR属性 与 依赖属性CLR属性我们非常熟悉了,在DotNet编程中随处可见。最简单最常见的属性访 问器就是直接操纵类的私有成员,如下:public class Person{ private String _name; public string Name { get { return _name; } set { _name = value; } }}C#3.0对这种常见的写法提供了“自动属性”... 阅读全文
posted @ 2011-09-07 13:44 Areas 阅读(218) 评论(0) 推荐(0)
摘要: Silverlight4中有一个DataPager分页控件,使用起来非常简单,拖过来,这样设置一下就可以用了,就可以搭配List(比如DataGrid)使用了,真是简单:最简单的客户端分页1 PagedCollectionView pcv = new PagedCollectionView(MyEntities/*IEnumerable<T>*/);2 3 this.dataPager1.PageSize = 10;4 5 this.dataGrid1.ItemsSource = pcv;6 this.dataPager1.Source = pcv;然后就可以实现分页了,效果如图: 阅读全文
posted @ 2011-09-07 10:40 Areas 阅读(917) 评论(0) 推荐(1)
摘要: 在第一篇文章中的示例中,我们已经简单的了解了应用MVVM模式的流程,我的本意是你已经了解了一点MVVM的概念,然后又没有一个较好的例子学习,可以跟着我一起学习MVVM模式,所以这个部分,都是没有理论知识的,当然整个例子学完后,我们会回过头探讨一下,将其总结出来。现在我们主要在前面的示例上进行扩展,前面的示例中我们主要是将一个源对象绑定到DataGrid中的,接下来我们继续使用MVVM模式,将DataGrid选择行的变化体现界面中,其实通过这个需求变化,你会发现UI与逻辑分离带来的优势,尽管才开始似乎有点不习惯,但是相信你会不自觉的在项目倾向于中使用MVVM模式。 需求:通过单击DataGrid 阅读全文
posted @ 2011-09-07 10:13 Areas 阅读(224) 评论(0) 推荐(0)
摘要: 这篇主要引申出Command结合MVVM模式在应用程序中的使用 我们要做出的效果是这样的 就是提供了一个简单的查询功能将结果绑定到DataGrid中,在前面的基础上,这个部分相对比较容易实现了 我们在PageViewModel中添加两个属性 private string _searchText; //查询关键字 public string SearchText { get { return _searchText; } set { _searchText = value; ... 阅读全文
posted @ 2011-09-07 10:13 Areas 阅读(100) 评论(0) 推荐(0)
摘要: 本来打算用MVVM实现CRUD操作的,这方面例子网上资源还挺多的,毕竟CRUD算是基本功了,因为最近已经开始学习Cailburn框架了,感觉时间挺紧的,这篇就实现其中的更新操作吧。 功能很明确,当我们更改DataGrid中的CheckBox时,将源中当前发生变化的数据项在界面上显示出来。我们仍然在前面项目的基础上实现这个功能首先我们需要给实体Person类添加一个Bool的属性,因为这里我们只对这个属性值操作,所以对于age,name属性也就无必要实现更改通知了 public class Person:INotifyPropertyChanged { p... 阅读全文
posted @ 2011-09-07 10:13 Areas 阅读(226) 评论(0) 推荐(0)
摘要: 如果你不知道MVVM模式,我建议你先了解一下MVVM模式,至少要知道实现该模式的意图是什么。 那么我主要通过我认为是已经算是比较简单的例子进行讲解这个模式,当然后面我们会在这个例子的基础上一步一步的进行扩展。 先来看一看我们的项目架构: 很典型的MVVM的分层方式 我们先来构建Model,首先在Person.cs中简单声明了一个类型 public class Person { public int age { get; set; } public string name { get; set;} } 类型定义好后,我们在P... 阅读全文
posted @ 2011-09-07 10:12 Areas 阅读(280) 评论(0) 推荐(0)
摘要: MVVM:模型-视图-视图模型(Model-View-ViewModel) 组成部分Model、View、ViewModelView:UI界面ViewModel:它是View的抽象,负责View与Model之间信息转换,将View的Command传送到Model;Model:数据访问层View与ViewModule连接可以通过下面的方式Binding Data:实现数据的传递Command:实现操作的调用AttachBehavior:实现控件加载过程中的操作View没有大量代码逻辑。结合WPF、Silverlight绑定机制,MVP演变出了MVVM,充分利用了WPF、Silverlight的优 阅读全文
posted @ 2011-09-07 10:11 Areas 阅读(519) 评论(0) 推荐(0)
摘要: 如何:访问双工服务Silverlight本主题描述了如何创建可访问 Windows Communication Foundation (WCF) 双工服务的 Silverlight 版本 4 客户端。本文假定您已完成如何:为 Silverlight 客户端生成双工服务中所述的过程,生成了 WCF 双工服务,并假定该解决方案处于打开状态。无论您在该教程中选择的是PollingDuplexHttpBinding还是NetTcpBinding绑定,此处的步骤都是相同的(除非另有说明)。本文中简要介绍的过程说明如何构造 Silverlight 4 客户端,该客户端向双工服务发送订单,随后由该服务回调两 阅读全文
posted @ 2011-09-07 10:00 Areas 阅读(319) 评论(0) 推荐(0)
摘要: 服务:1[WebMethod]2publicstringHelloWorld()3{4return"您好!";5}silverlight中代码:view sourceprint?01namespaceDynamicDemo02{03publicpartialclassMainPage : UserControl04{05publicMainPage()06{07InitializeComponent();08}0910privatevoidbutton1_Click(objectsender, RoutedEventArgs e)11{12CallService(" 阅读全文
posted @ 2011-09-07 09:46 Areas 阅读(184) 评论(0) 推荐(0)
摘要: 如何:为 Silverlight 客户端生成双工服务如何:为 Silverlight 客户端生成双工服务本主题描述了如何创建可与 Silverlight 客户端进行通信的双工 Windows Communication Foundation (WCF) 服务。双工服务将保留到 Silverlight 客户端的回调通道,它允许该服务对此客户端进行调用。双工服务具有许多应用程序,例如,包括用于即时消息传递的聊天服务程序或用于向客户端发送通知的监视服务。本示例提供一项服务,该服务允许客户端按名称对指定数量的产品项进行排序。该服务将模拟订单处理过程,然后使用订单的状态回调客户端。在双工消息传递中,服务 阅读全文
posted @ 2011-09-07 09:41 Areas 阅读(315) 评论(0) 推荐(0)