随笔分类 - Silverlight
转载于网络
摘要:1. IntroductionWhatever software application you want to create, the most important problem that must be solved is the tight coupling. Mixing one layer with another is a very common mistake and it is the main reason for your application to be tightly coupled. For example: as a practical example in t
阅读全文
摘要:在前面的Silverlight入门系列文章中穿插讲了一些MVVM模式系列文章,MVVM模式貌似简单,其实要把界面逻辑抽象出来还是很不容易,像《TreeView真正实现MVVM模式和Expanded发生时异步动态加载子节点(WCFRiaService)》就不是这么简单,有的童鞋像feiyang还要实现Treeview的展开状态持久化和自动恢复,配合MVVM实现不容易。所以,MVVM的核心概念理解不难,在具体使用上则问题多多。今天要讲的话题就是一个MVVM使用上的具体问题: Silverlight中的Storyboard动画是否可以在ViewModel中来控制?为什么想在ViewModel中控制S
阅读全文
摘要:[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入门系
阅读全文
摘要: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...
阅读全文
摘要:在上一讲中介绍了MVVM的核心概念,运用MVVM模式可以分离视图、视图逻辑和模型,提高可测试性和可维护性等,但如果一个视图比较复杂,仔细Review一下其ViewModel你会发现非常庞大臃肿复杂,而且部分代码逻辑不可重用,例如另外一个ViewModel想重用其中的部分代码逻辑而不是整个重用,就没有办法。所以最好进一步分离ViewModel的关注点,分离出Services实现IServcie接口,让Service去做一些可重用的工作,分离出一些可重用的操作,这样其他的ViewModel就可以用Service来重用ViewModel的部分逻辑了。原来的ViewModel关注点可以聚焦在用户界面交
阅读全文
摘要:本文说说ViewModel的这个INotifyPropertyChanged接口可以用来做啥?举例1:我有个TabControl,里面放了很多View,每个由ViewModel控制,我想是想TabSelectionChanged就打开相应的ViewModel,怎么做?解答:用ViewModel的INotifyPropertyChanged接口实现,因为TabItem作为一个选择器就有 IsSelected属性,把这个属性绑定到ViewModel的IsSelected字段,然后这个字段改变的时候用INotifyPropertyChanged接口实现通知即可。整个流程用MVVM实现非常整洁。Xam
阅读全文
摘要:Behavior把一些常用的行为封装成可重复使用的组件(Component),在理想状况下,Designer(设计师)或domain expert(特定领域的专家,例如财会人员、HR人员、或MIS)甚至可以完全不需要具备程序设计的观念,只需要了解基础的事件(Event)观念,就可以顺利的开发出一套系统,若需要实现特定的功能时,可商请developere为他们开发所需要的Behavior,designer只需要取得这些Behavior并使用即可。例如,界面设计人员可以使用Expression Blend把一个Behavior拖到一个界面元素上,比如右键点击以后启动一段动画这个行为,这个界面元素就
阅读全文
摘要:数据验证(Validation)是界面程序的常见需求,例如使用正则表达式验证用户输入的Email地址是否合法,然后在界面给出错误提示信息。在Sivlerlight的MVVM模式中,我们在Model和ViewModel可以做Validation,然后需要把Model和ViewModel的Validation结果和错误信息通知视图(View)。在WPF中,我们使用IDataErrorInfo,在Silverlight4中,建议使用INotifyDataErrorInfo。关于这个接口怎么使用,如何实现ErrorProvider的功能,如何做DataForm的Validatio,请参考我的旧一篇。I
阅读全文
摘要:在上一篇写了Model的INotifyPropertyChanged接口实现,在Prism中有一个NotificationObject自动实现了这个接口,位于Microsoft.Practices.Prism.ViewModel命名空间下。也就是说,Prism推荐ViewModel继承这个NotificationObject类来自动实现INotifyPropertyChanged接口。看看NotificationObject都有啥:1 public abstract class NotificationObject : INotifyPropertyChanged2 {3 prot...
阅读全文
摘要:INotifyCollectionChanged在上一篇讲了《[Silverlight入门系列]使用MVVM模式(1):MVVM核心概念 》,今天讲一下集合Model。所谓集合Model就是给ItemsControl,如DataGrid,Combobox等绑定的集合数据模型。另外,通过定制ItemsControl的数据模板(DataTemplate),还可以控制集合对象中每一项的显示。实现很简单,但数据源集合对象必须继承IEnumerable接口,为了让目标属性与数据源集合的更新(不但包括元素的修改,还包括元素的增加和删除)保持同步,数据源集合还必须实现INotifyPropertyChang
阅读全文
摘要:当客户端绑定一个数据模型以后,数据模型变化以后可以自动通知客户端更新界面显示,这就是INotifyPropertyChanged接口要做的工作。INotifyPropertyChanged接口用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知。例如,考虑一个带有名为FirstName属性的Person对象。若要提供一般性属性更改通知,则Person类型实现INotifyPropertyChanged接口并在FirstName更改时引发PropertyChanged事件。若要在将客户端与数据源进行绑定时发出更改通知,则绑定类型应具有下列功能:实现INotifyPropertyCha
阅读全文
摘要:编辑器加载中...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. 可重用性。你可以把一些视图逻辑放在一
阅读全文
摘要:Silverlight入门:第一部分 - 开发工具与程序入门Silverlight入门:第二部分 - 定义界面布局和导航Silverlight入门:第三部分 - 数据访问Silverlight入门:第四部分 - 数据绑定Silverlight入门:第五部分 - 整合其它控件Silverlight入门:第六部分 - 美化用户界面的样式与模板Silverlight入门:第七部分 - 脱离浏览器的经验
阅读全文
摘要:我们已经有了一个功能完备但还可以锦上添花的应用程序。让我们使搜索结 果模板更漂亮一些。我们准备在Search.xaml的数据模板中为ItemControls做一 些修改。这些修改就像我们已经使用过的编辑模板功能一样可以在Blend中完成。应用 了新的用户界面样式看起来会像这样:我们可以注意到模板风格更精致了,却没有影响到原来的代码。虽然最后它 将会输出大量的代码,但是我可以给你指出最终项目中的样式的位置。应用样式和模板与绑定数据和模板很相像。如果我们观察一下ScrollViewer 的状态:1 <ScrollViewer Style="{StaticResource scrol
阅读全文
摘要:在本系列的最后一节中,我们准备让应用程序脱离浏览器运行。这会比你想 象的容易很多。创建清单在Visual Studio中右击Silverlight应用程序项目,并且选择属性,你将会 看到一个弹出的对话框——注意有关脱离浏览器设置的多选框:当你点击以后需要完成一些选项:为你的应用程序设置安装或脱离浏览器运行时的可视化信息是非常重要的。* 窗体标题——显示在应用程序的窗体标签中* 宽/高——应用程序启动时的初始宽度和高度* 快捷方式名称——用于在桌面和开始菜单中显示的名称* 下载说明——应用程序的说明* 图标——必须是PNG格式同时还必须在项目中标记为Content在你完成这些配置以后,让我们为你
阅读全文
摘要:在之前的章节中,我们优化了数据绑定,并将数据保存在了我们的独立存储 区域。现在让我们整合一些其它的控件使得用户体验更好一些。自动完成输入框记得每次搜索以后,我们都将搜索条件保存为历史数据吗?让我们通过在他 们输入时提供搜索历史来让他们使用更方便。我们准备用Silverlight工具包中 的一个控件——自动完成输入框来做这件事。要做到这点,我们需要添加一个到System.Windows.Controls.Input的程序集 引用,然后在你的Search.xaml文件中添加一个xmlns:1xmlns:input="clr- namespace:System.Windows.Contro
阅读全文
摘要:在之前的第三部分中,我们做了很多工作来获取公共Web服务返回的数据并让 其显示在控件中。我们已经用过了DataGrid控件,但它并不是我们真正想要的用 户界面,所以让我们自己来定义一个。为此,我们需要一个ItemsControl和一个 DataTemplate。这将让我们学习到XAML的绑定语法,以及如何利用更强大的数据 绑定信息。在开始之前——先删除DataGrid在开始之 前,让我们先删除并且只删除DataGrid,我们也不再需要它的程序集引用以及 xmlns,所以也可以大胆删除它们。把DataGrid替换成ItemsControl,像 是这样:1 <ItemsControl x:N
阅读全文
摘要:现在我们已经有了一个基础布局,同时也在上面放了一些控件,接下来让我 们开始获取数据。因为我们想要搜索Twitter上的内容,所以我们需要充分使用 他们提供的Web服务API。在继续之前,我要先说明在本次的应用程序中,我们不 会自己建立一个数据库或其它数据源,但是我要指出的是你有很多种方式可以通 过Silverlight访问数据。数据访问选项对于在Silverlight中访问数据,初学者的误解之一就是他们在Silverlight 中寻找ADO.NET类库。别找了,找不到的。记住,Silverlight是部署在互联网上 的客户端技术,你不能要求一个浏览器插件去直接访问你的数据库……除非你想 把数据
阅读全文
摘要:理解XAML应用程序中的布局管理是开发成功Silverlight应用的一个重要方面 。对于大多数来自Web领域的人来说,如果你对CSS不熟悉,那么这将成为你面临 的最大的挑战之一。理解布局选项Silverlight提供了一个灵活 的系统用于在页面上布置界面元素。布局模型同时支持绝对定位和相对定位的布 局风格。虽然提供了多种布局控件,但最常用的是:CanvasStackPanelGrid让我们逐个看看当把元素放在其中的时 候,它们是如何工作的。我们将使用一个简单的按钮元素来演示。我们使用本系 列第一部分创建的项目,并在Home.xaml页面作简单的演示。CanvasCanvas是最基础的布局控件
阅读全文
摘要:开发工具当然了,不管做任何开发,你都只需要一个文档编辑器和一个编译器。但你 没有任何理由不使用世界级的开发工具。所以我将在这里推荐给你一套开发工具 ,让你可以更加简单快捷地构建Silverlight应用程序。注意这些都不是必须的 (重申一遍,如果你是发烧级别的开发人员,那么你只需要一个记事本和一个编 译器 :-))。虽然它们不都是免费的,但是我还是极力推荐它们,不只是因为我 效力于微软,而是我真的觉得它们是世界上最棒的开发工具。Visual Studio 2008你要确定你已经有了Visual Studio 2008,安装Silverlight工具之前你还需 要装上SP1补丁,所以先确认一下你
阅读全文
浙公网安备 33010602011771号