SCSF 之 DockPanel 扩展

       本文主要介绍利用DockPanel实现自定义的Smart Client Soft Factory(SCSF)中的Workspace,在使用SCSF开发多文档Winform应用程序时实现类似Visual Studio多文档界面.

 

      DockPanel是非常好用的开发类似Visual Studio多文档界面组件。可以从http://sourceforge.net/projects/dockpanelsuite/下载使用。

     

      Smart Client Software Factory是Microsoft patterns & practices中的智能客户端开发用户界面框架。其中实现了很多常用的Workspace类,如TabWorkspace,WindowWorkspace,MdiWorkspace,ZoneWorkspace等等,可以使用这些Workspace类方便的显示、管理我们的视图。此外还实现了WorkspaceComposer的泛型类,此类实现了基本的Workspace管理SmartPart的功能,我们可以采用组合的方式(SCSF中的大部分Workspace都是组合该类来实现的)和IWorkspace接口(SCSF中的Workspace必须实现该接口)实现我们自定义的Workspace类。

      类图如下:

   

                        

  

      下面我们看看WorkspaceComposer类的两个泛型参数TSmartPart和TSmartPartInfo。在SCSF中WorkspaceComposer类的定义为:

     

      public class WorkspaceComposer<TSmartPart, TSmartPartInfo> : Workspace<TSmartPart, TSmartPartInfo> where TSmartPartInfo : Microsoft.Practices.CompositeUI.SmartParts.ISmartPartInfo, new()

     

      从后面的where约束看出TSmartPart是一个可以通过new运算符创建的引用类型(应该视图类的基类行来实例话),一般为Control(所有用户界面类都继承自Control类)类来实例化即可,第二个泛型参数TSmartPartInfo是实现ISmartPartInfo接口的类型。顾名思义ISmartPartInfo是SmartPart的信息类,也就是描述视图(SmartPart)的显示位置、显示方式等信息的类,Workspace管理或者显示一个视图时根据SmartPartInfo来管理。每种Workspace显示视图时可能需要不同的信息,因此在此对显示信息类抽象并独立开来,我们可以参考SCSF中TabSmartPartInfo,WindowsSmartPartInfo等类的实现代码,很容易就实现我们的SmartPartInfo类。

    

      到此我们有了DockPanelWorkspace,DockPanelSmartPartInfo类。那么Workspace如何获得SmartPartInfo呢?

很幸运 WorkspaceComposer类为我们做好了一切,只需按步骤实现相应的方法即可,这里简单讲一下其实现机制。

     有两种方式可以将一个视图(SmartPart)的信息传递给Workspace。

 

     1.调用Workspace的成员方法

    

     

     

     2.视图(SmartPart)类实现ISmartPartInfoProvider接口,返回自己的配置信息。我们在Workspace的Show方法实现代码中可以看到。

    

      

 

    综上述分析我们基本可以实现我们的DockPanelWorkspace类,下面是完善后的类图关系

 

     

 

   下面是实现代码希望对大家学习Smar Client Soft Factory有所帮助,也希望多多指点:)。

 

       DockPanelWorkspace代码:

   

      

     

       DockPanelSmartPartInfo代码:

     

      

    

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值