文章分类 -  13框架模式

摘要:(一)ICollectionView的作用 允许集合具有当前记录管理、自定义排序、筛选和分组这些功能。(二)如果在MVVM中不用ICollectonView的后果 我们这里以ListBox为例,看看我前面介绍的ListBox制作工具栏 如果我们不用ICollectionView,我们选中ListBox某一项,还必须跟SelectionChanged事件定义一个绑定方法来绑定Command,来处理事件(我们以MvvmLight的处理方式来处理Command),这里我们还要添加MvvmLight中的EventToCommand行为。代码如下<i:Interaction.Triggers> 阅读全文
posted @ 2011-09-06 12:05 焦涛 阅读(3497) 评论(4) 推荐(0) 编辑
摘要:在MvvmLight中要注意的一个地方的就是在某些地方要用到消息注销Unregister<T>。否则注册后的消息处理方法会被执行多次(至少是3次)这里把这个问题总结如下:(一)场景:如果你是在MainPage中New一个ReceiverSecond消息接受者,然后再发送消息,就像下面的做法:private void Button_Click(object sender, RoutedEventArgs e) { //sp2.Children.Clear(); ReceiverSecond temp = new ReceiverSecon... 阅读全文
posted @ 2011-08-31 08:39 焦涛 阅读(1109) 评论(3) 推荐(0) 编辑
该文被密码保护。
posted @ 2011-08-03 16:40 焦涛 阅读(137) 评论(2) 推荐(0) 编辑
摘要:本篇介绍MvvmLight中一个重要的东东,那就是Messenger.(一)Messenger的基本组成Messenger类用于应用程序的通信,接受者只能接受注册的消息类型,另外目标类型可以被指定,用Send<TMessage, TTarget>(TMessage message)实现,在这种情况下信息只能被传递如果接受者类型和目标参数类型匹配,message可以是任何简单或者复杂的对象,你可以用特定的消息类型或者创建你自己的类型继承自他们(1)MessageBase:简单的消息类,携带可选的信息关于消息发布者的(2)GenericMessage<T>:范型消息(3)N 阅读全文
posted @ 2011-07-28 15:31 焦涛 阅读(3416) 评论(3) 推荐(1) 编辑
摘要:本篇主要学习MVVMLight中RelayCommand和如何将Blend中自带的EventToCommand行为应用到RelayCommand中。下面是实例代码。(1)在MainPage.xaml中写下如下代码。设置Grid的AllowDrop="True",代码如下 <Grid x:Name="LayoutRoot" AllowDrop="True" Background="#FF9F9F9F"> <TextBlock FontSize="36" FontWeight=&q 阅读全文
posted @ 2011-07-27 11:25 焦涛 阅读(706) 评论(0) 推荐(0) 编辑
摘要:现在http://mvvmlight.codeplex.com/上下载MVVM Light安装包GalaSoft.MvvmLight.V3SP1WithHotfix.zip。解压Zip文件,会出现多个Zip文件。因为我们的环境是VS2010和Blend4,所以只需要解压选中的几个文件。这里假设我的计算机上的“我的文档”路径为C:\Users\Administrator\Documents\(1)解压GalaSoft.MvvmLight.Binaries.V3.zip文件,解压路径为C:\即可。里面有MVVM Light Toolkit 的核心.dll文件(2)解压GalaSoft.MvvmLi 阅读全文
posted @ 2011-07-26 17:43 焦涛 阅读(1321) 评论(0) 推荐(0) 编辑
摘要:本节学习了Navigation的一些基本知识,觉得这节比较难。这里讲学习和理解点的东西记录下来。觉得本节应该弄清楚的问题的关键词 (1)CallMethodAction用于事件和行为的绑定。(2)InteractionRequest<T> 在交互请求时协调ViewModel和View(3)Notification用于交互式单向通知用户,所以ViewModel不能预测用户对Notification中Title和Content的更改(4)学会自定义行为和操作(一)在ChatView.xaml,代码如下View Code <Grid x:Name="LayoutRoot& 阅读全文
posted @ 2011-07-12 16:36 焦涛 阅读(2105) 评论(2) 推荐(0) 编辑
摘要:本节学习了Prism中的UI Composition(界面组合),我认为里面最用的一个问题就是父视图区域如何把上下文(RegionContext)传到子视图,且子视图如何从获得的RegionContext中获取数据的。本文以UI Composition QuickStart为列说明这个问题。(一)先看看这个项目的UI结构。(二)父区域与子区域的区域上下文(RegionContext)过程简介 首先在EmployeeSummaryView.xaml中TabControl添加如下代码: <!--TabControl定义为一个区域, 包含EmployeeDetailsView 和 Employ 阅读全文
posted @ 2011-07-08 16:48 焦涛 阅读(3160) 评论(0) 推荐(0) 编辑
摘要:Event Aggregation(事件聚集)Prism类库提供了事件机制能让应用程序中的组件相互通信。这种机制建立在事件聚合(event aggregate)服务上,允许发布者和订阅者通过事件通信,不许要彼此直接引用。EventAggregator提供了多点传送发布/订阅功能。这意味着可能有可以触发同一事件多个发布者和可以监听同一事件的订阅者。考虑使用EventAggregator 来发布一个事件,贯穿多个模块和发送消息在业务逻辑代码间,像控制器和展示。在Stock Trader RI,关于这个的一个例子就是,当Process Order 按钮别点击而且订单被成功处理,如痴同时,其他模块需要 阅读全文
posted @ 2011-07-06 11:53 焦涛 阅读(732) 评论(0) 推荐(0) 编辑
摘要:本节学习了Event Aggregation事件聚合,这个在Prism中很重要,特别是对于Module间的通信。除了前面介绍的Command可以用于模块间的通信,还有我们这一节介绍的Event Aggregation(事件聚合).(一)为什么不用.NET FrameWork中的事件呢? 使用.NET Framework事件是罪简单和直观的方式用于非松散耦合需求的组件,属于对象引用依赖的发布-订阅模型(二)EventAggregator事件聚合器 提供了多点传送发布/订阅功能。这意味着可能有可以触发同一事件多个发布者和可以监听同一事件的订阅者。(三)模块间通信过程简介 CompositePre. 阅读全文
posted @ 2011-07-06 10:03 焦涛 阅读(2613) 评论(0) 推荐(0) 编辑
摘要:本节结束了Prism中Commanding QuickStart这个项目,主要讲解了CompositeCommand和DelegateCommand。CompositeCommand往往来出来一批命令,就像下面的Order,你可以填写一个订单后,就保存这个订单。你可以一个订单,但不保存,继续天下一个订单,最后点击一个按钮SaveAllOrders,把所填的所有订单一次性全部保存。首先我们来看看OrderModule,它是一个模块,代码如下: 通过使用DelegateCommand,你可以为Execute和CanExecute方法提供委托。(1)在OrderPresentationModel.c 阅读全文
posted @ 2011-07-05 15:04 焦涛 阅读(916) 评论(0) 推荐(0) 编辑
摘要:这几天学习Prism,看了下帮组文档和程序。在Prism中专门讲解模块化程序开发的有俩个列子,一个是用Unity解耦实现Prism的依赖注入,另一个列子是用MEF解耦是实现Prism的依赖注入。案例(一):ModularityWithUnity.Silverlight开启应用程序(1)App.xaml.cs中 private void Application_Startup(object sender, StartupEventArgs e) { //创建Shell实例,不需要设置RootVisual QuickStartBootstrapper bootstrapper = new Qui. 阅读全文
posted @ 2011-06-29 14:24 焦涛 阅读(1769) 评论(0) 推荐(0) 编辑
摘要:构建模块化应用程序的好处核心概念这一部分介绍了Prism中模块性的相关概念,包括IModule接口,模块的加载过程,模块目录,模块间的通讯和依赖注入容器。IModule: 应用程序的构建块一个模块是一个逻辑的功能集合,也是一种以某种方法打包的资源,这种资源可以被独立开发,测试,部署,整合到一个应用程序中。一个包可以是一个或多个程序集,不是作为松散的集合就是包在一起作为一个XAP文件。每一个模块有一个中心类,该类负责初始化模块和整合模块功能到应用程序中。那个类实现了IModule接口,实现IModule接口类的实例足以鉴别一个包作为一个模块,IModule接口有一个简单的方法,被命名为Intia 阅读全文
posted @ 2011-06-25 19:57 焦涛 阅读(540) 评论(0) 推荐(0) 编辑
摘要:最近学习Prism框架(本文参考 我和未来有个约会 建立可扩展的Silverlight应用框架),下面是我第一个程序:(一)新建项目PrismDemo (1)将MainPage.xaml和MainPage.xaml.cs重新命名改为Shell.xaml和Shell.xaml.cs. (2)在Shell.xaml中添加命名空间: xmlns:Regions="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism" (3)在Shell.xaml文件中添加如下代码: & 阅读全文
posted @ 2011-06-09 14:25 焦涛 阅读(1989) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示