[导入]Composite UI Application Blocks 点滴(一)

来源:互联网 发布:淘宝买点卡订单被关闭 编辑:程序博客网 时间:2024/05/19 12:12
 

Composite UI Application Blocks 点滴(一)
 前段时间学习了一下CAB,在正式的运用的时候还是出现了一些问题。在这里记录一下,供大家参考。

(1)SmartPart加载问题
 都怪我没有看清E文的说明,在labs的代码中相应的地方作了说明——如果加载的窗体上有SmartPartHolder的话,并且要在主窗体加载的时候显示相应的SmartPart,应在WorkItem 的Run方法中,在Show出主窗体之前应该,先Creat Smartpart。代码如下:

  1. public void Run(IWorkspace workspace)
  2.         {
  3.             //先Create 相应的SmartPart
  4.             Create<CustomerQueueView>("CustomerList");
  5.             mainView = Create<BankTellerMainView>();
  6.              //再Show主窗体
  7.               workspace.Show(mainView);
  8.         }

 

(2)在 State 中存放数据
 State中就像Asp.net中的Session一样好用,并且只在WorkItem的范围中有效。但是使用的方式有点不同。

  1.         //在workItem的类中这么写是可以的。
  2.          public MedicalCase PatientMedicalCase
  3.         {
  4.             get
  5.             {
  6.                 return (MedicalCase)State["patientMedicalCase"];
  7.             }
  8.             set
  9.             {
  10.                 State["patientMedicalCase"] = value;
  11.             }
  12.         }
  13.         //在其他的类中比如Controler或是View中,利用Attribute来使用State中的值
  14.         [State("patientMedicalCase")]
  15.         private MedicalCase patientInfo = null ;

 

(3)使用EventBroker(事件代理)
 这个真是个好东西,让触发事件和处理事件的两个类彻底解耦——两个类之间根本就不需要知道对方的存在。同时也为我们框架提供了很好的思路,并引入了这种机制,让结构变得更加优雅。EventBroker使用的方法如下:

  1.  //在A类中定义事件,和它的Key“topic://SmartClient/Status1Update”,后面再指定一下事件的广播范围
  2.  [EventPublication("topic://SmartClient/Status1Update", EventScope.Global)]
  3.         public event EventHandler<DataEventArgs<string>> UpdateStatusTextEvent;
  4.  //在B类中处理事件
  5.         [EventSubscription("topic://SmartClient/Status1Update", EventScope.Global,          Thread = ThreadOption.UserInterface)]
  6.         public void OnStatusUpdate(object sender, DataEventArgs<string> e)
  7.         {
  8.             toolStripStatusLabel1.Text = e.Data;
  9.         }

 

(4)WorkItem嵌套
 在CAB中一个WorkItem和一个用例对应,用例就相当一个类,一个用例发生一次,就会实例化一次用例(实例化一次WorkItem).所以会出现一个workItem中会有许多子WorkItem(子用例),这样可以提高界面的响应速度,当然也需要在必要的事情清理掉短时间内不会再用刀到的WorkItem。以免内存占用过多。


文章来源:http://www.agilelabs.cn/blogs/wind_tower/archive/2006/01/11/507.aspx

posted on 2006-01-16 10:24 太白飞仙 阅读(47) 评论(0)  编辑 收藏

原创粉丝点击