• 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

  • 相关阅读:
    解决Qt5 Creator无法切换输入法(fcitx),不能录入汉字问题
    QProcess进程间双向通信
    DB2使用存储过程插入数据
    Qt自定义圆周动画(360 10.0 的模仿作者写的)
    经典重温:给微软上课的快乐车夫
    很劲爆!紫光赵伟国在北京微电子会议上12条惊人语录
    中芯国际董事长周子学:技术终有山顶,我们用时间换技术
    windows完全支持C++11的轻量级编译器(官网MinGW和非官方的MinGW-builds)
    VMwarevSphere 服务器虚拟化之二十九 桌面虚拟化之安装View副本服务器
    Qt判断和打开进程(windows端),运行,检测,中止
  • 原文地址:https://www.cnblogs.com/cnki/p/11515383.html
Copyright © 2020-2023  润新知