zoukankan      html  css  js  c++  java
  • Composite UI Application Block(CAB)

    序言

    WorkSpace

    WorkSpace:作为一个容器,它可以统一的添加和显示视图。CAB中提供了一组控件作为视图的容器,包括DeckWorkSpace,MDIWorkSpace,TabWorkSpace,WindowWorkSpace,ZoneWorkSpace。 它们的作用有点类似普通Windows 控件Panel,MDI窗口,TAB控件,Window窗体。在程序中根据名称可以通过WorkItem的WorkSpace集合索引到它们。

    Workspace是SmartPart的容器与管理器。它可以控制SmartPart如何显示或者隐藏,以及如何布局。

    WorkSpace 分为5种,用于动态加载各种继承于controller的用户自定义控件,也即smartPart。

    1.WindowWorkSpace

    该WorkSpace能将你需要在其中显示的用户控件在一个WinForm中显示出来,我们可以通过和该WorkSpace对应的WindowSmartPartInfo来设置用户控件的显示属性,如标题信息,是否是模式窗口等。

    2.MDIWorkSpace

    该WorkSpace是在WindowWorkSpace的基础上发展而来的,他同样将一个用户控件在单独的Form中进行显示,并且,他还将以MDI的形式显示和管理其子窗体。对应用户控件的显示信息的设置是通过设置smartPartInfo,然后作为参数传入WorkSpace的Show方法。

    3.TabWorkSpace

    该WorkSpace能将你需要在其中显示的用户控件以Tab页的形式显示出来,我们可以通过和该WorkSpace对应的TabSmartPartInfo来设置用户控件的显示属性,如标题信息。

    4.DeckWorkSpace

    该WorkSpace将以类似于重叠的卡片的形式来显示用户控件,当前激活的界面将在卡片的最上方。卡片的数序是由Workspace进行管理。没有和该WorkSpace对应的SmartPartinfo.

    5.ZoneWorkSpace

    该WorkSpace将以平铺的方式显示用户控件,比如类似OutLook的界面,可以将一个界面划分成多个Zone,每个Zone都是作为呈现用户控件的一个容器。同样的,我们可以通过设置ZoneSmartPartInfo来设置用户控件在WorkSpace中的显示属性。

    SmartParts 

    也可以被称作View,实际上是一个个自定义的控件。

    WorkItems 

    代表一个用例,包含在 Workspace 之中

    State

    你可以把它想象成Asp.net中的Session一样,可以把一些在本WorkItem中传递的信息存到State中。

    Event 

    Event Broker:事件代理,通过事件源和订阅事件源来达成对象之间的协作。

    Event Publisher:事件发布者,在CAB里是一个用属性EventPublication修饰的事件对象,提供特定的URL给Event Subscriber订阅。

    Event Subscriber:事件订阅者,在CAB里是一个用属性EventSubscription修饰的方法,根据修饰提供的URL自动寻找事件发布者。Publisher和Subscriber之间由主题(由URL决定),

    [EventPublication("topic://TestReport/DataRowAdded")]
    public event EventHandler<DictionaryEventArgs> DataRowAdded;

    FormShellApplication

    现在我们来看看基于CAB的应用程序中非常重要的一个类。这个类可以认为是一个CAB应用的启动点。

    class Program : FormShellApplication<MainWorkItem, MainShellForm>

    Controller

    controller中主要来实现业务逻辑,于是我们需要添加一个方法AddNewRow(int sex, string name),用来实现人员信息的添加

    整合界面和controller,[CreateNew],将该窗体相关的Controller标记为自动创建实例

    资料

    https://www.cnblogs.com/lglruirui/archive/2010/06/21/1761737.html?tdsourcetag=s_pcqq_aiomsg

    https://www.cnblogs.com/mixiaobo/archive/2008/01/16/1041349.html

    https://www.cnblogs.com/wf20012/archive/2007/04/18/718610.html

    https://www.cnblogs.com/lglruirui/archive/2010/07/07/1772912.html

  • 相关阅读:
    MySQL时间函数
    Linux安装php运行环境
    linux 防火墙配置
    CENTOS启动后网卡启动不了
    价值
    浏览器STATUS_INVALID_IMAGE_HASH报错解决方法
    wordpress更改域名最简单的方法
    Connection to 天mysql failed. [08001] Could not create connection to database server. Attempted ,报错处理方法
    centos实现三个节点高可用
    安装nginx1.16.1版本
  • 原文地址:https://www.cnblogs.com/cnki/p/11515383.html
Copyright © 2011-2022 走看看