【Prism】MEF版Commanding

引言

接下来的是Commanding Demo的改造.

DelegateCommand

   WPF本身提供了一个RoutedCommand,然而没什么卵用.在Prism框架中提供了个更人性化的ICommand的实现--DelegateCommand,如下

public class ArticleViewModel : NotificationObject
{
    private readonly ICommand showArticleListCommand;

    public ArticleViewModel(INewsFeedService newsFeedService,
                            IRegionManager regionManager,
                            IEventAggregator eventAggregator)
    {
        this.showArticleListCommand = new DelegateCommand(this.ShowArticleList);
    }

    public ICommand ShowArticleListCommand
    {
        get { return this.showArticleListCommand; }
    }
}

CompositeCommand

CompositeCommand是Prism提供的一个组合式命令实现.它可以在子命令都可用的情况下同时执行多个子命令.应用情况不是很多,但是可以了解一下.如下

public class MyViewModel : NotificationObject
{
    private readonly CompositeCommand saveAllCommand;

    public ArticleViewModel(INewsFeedService newsFeedService,
                            IRegionManager regionManager,
                            IEventAggregator eventAggregator)
    {
        this.saveAllCommand = new CompositeCommand();
        this.saveAllCommand.RegisterCommand(new SaveProductsCommand());
        this.saveAllCommand.RegisterCommand(new SaveOrdersCommand());
    }

    public ICommand SaveAllCommand
    {
        get { return this.saveAllCommand; }
    }
}

示例源码

http://pan.baidu.com/s/1sjuWkod

小结

更多的Commandi用法可以在官方文档Prism 4.0的Chapter 9中查阅.

时间: 2024-10-12 18:10:21

【Prism】MEF版Commanding的相关文章

Prism&MEF构建开发框架 (一)

Shell框架XECA shell.xaml主要起到是一个容器或壳的作用 <Window x:Class="XECA.Shell"      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"                xmlns:in

【Prism】MEF版HelloWorld

引言 Pirsm框架是由微软P & P小组设计的,用于构建组合式的WPF企业级应用,支持两个IOC容器,分别为Unity和MEF.官方地址为http://compositewpf.codeplex.com/,在上面可以有最新的源码和Demo,其中多数Demo都是用Unity容器构建的,而本人比较喜欢MEF,打算把Unity的Demo全部改成MEF的,先从HelloWorld开始吧. 模块HelloWorldModule 我们需要将HelloWorld.xaml先导出,,如下 [Export(&qu

【Prism】MEF版UIComposition

引言 UIComposition原版Demo在PrismV5的解压包里面.原Demo用了.net4.5版本的DLL,我改成.net4.0的. RegionContext 这个Demo比之前那几个示例大概也只是多了一个新概念,那就是RegionContext. 众所周知,View的DataContext一般都是对应ViewModel,而Region很多时候也可以看成是一个View,所以Prism给了它一个RegionContext作为Region中多个子View的共享数据上下文. 一般用于Regi

【Prism】MEF版EventAggregation

引言 第三弹是EventAggregation Demo的改造. EventAggregation  EventAggregation事件聚集是Prism框架中的通信实现.它可以在松散的模块或者窗体之间引发事件和传递参数,从而达到通信的目的.用法简单,完成三部曲即可. 1.继承CompositePresentationEvent<TPayload>,自定义事件类,如下 public class FundAddedEvent : CompositePresentationEvent<Fun

Prism&amp;MEF构建开发框架 (三)

菜单管控模块EntityFW 菜单的加载采用MEF技术,程序实现思路: 1 .主菜单加载页面MainMenuView.xaml指向MenuRegion 2. 菜单Item点击及内容加载,采用订阅模式,即菜单item点击时发布消息,shell负责订阅并过滤加载子模块 MainMenuView.xaml <UserControl x:Class="EntityFW.Views.MainMenuView"       xmlns="http://schemas.microso

【翻译】WPF应用程序模块化开发快速入门(使用Prism+MEF)

编译并运行快速入门 需要在VisualStudio 2010上运行此快速入门示例 代码下载:ModularityWithMef.zip 先重新生成解决方案 再按F5运行此示例 说明: 在此快速入门示例解决方案的 ModularityWithMef.Desktop程序集中 加入了生成成功时的“后期生成事件命令行” IF NOT EXIST "$(TargetDir)\DirectoryModules" mkdir "$(TargetDir)\DirectoryModules&q

Prism&amp;MEF构建开发框架

系统框架构想效果图 平台简单由左侧菜单和右侧内容区以及顶部系统和用户信息区构成 菜单根据系统模块动态加载 右侧,根据左侧选中菜单动态加载子模块,子模块集合以tab选项卡方式布局 系统模块划分为Shell框架XECA.基础模块MyGlobal.Infrastructre.业务模块.数据提供模块DAL.服务提供模块.数据访问控制DCA..

Core 3 WPF MVVM框架 Prism系列之数据绑定

一.安装Prism 1.使用程序包管理控制台# Install-Package Prism.Unity -Version 7.2.0.1367 也可以去掉‘-Version 7.2.0.1367’获取最新的版本 2.使用管理解决方案的Nuget包# 在上面或许我们有个疑问?为啥安装prism会跟Prism.Unity有关系,我们知道Unity是个IOC容器,而Prism本身就支持IOC,且目前官方支持几种IOC容器: 1.且unity由于是微软官方的,且支持prism的组件化,由此我推荐使用pr

Model-View-ViewModel (MVVM) Explained 转摘自:http://www.wintellect.com/blogs/jlikness/model-view-viewmodel-mvvm-explained

The purpose of this post is to provide an introduction to the Model-View-ViewModel (MVVM) pattern. While I've participated in lots of discussions online about MVVM, it occurred to me that beginners who are learning the pattern have very little to go