UIExtensionSite菜单项(MenuItem)菜单工具栏(Menu strips)按钮按钮工具栏(Toolbar Strips)下面的篇幅中,将要介绍如何使用UIExtensionSite: 步骤: 添加一个UIExtensionSite 在这个例子中,我们添加一个ToolbarStrips类型的UIExtensionSite。打开ShellLayoutView或ShellForm(取决于是否在创建SmartClient工程的时候创建Layout项目),在Toolbox中选中ToolStrip,添加到Designer中,打开属性,在Dock中选中Top,修改Name为“ButtonsBar”。 在Infrastructure.Interface项目中,打开Constants.UIExtensionSiteNames类,添加如下代码: public const string ButtonsBar="ButtonsBar" 将ButtonsBar的名字定义为常量,在UIExtensionSiteNames中,所有的常量必须唯一。在SmartClient中,是以名字作为一个UIExtensionSite唯一标识的。 下面的代码用来注册一个UIExtensionSite WorkItem.UIExtensionSites.RegisteSite(UIExtensionSiteNames.ButtonsBar, this.View.ButtonsBar); 可以将上述代码加到ShellLayoutViewPresenter类的OnViewSet()方法中或加到ShellApplication类的Run方法中(取决于是否在创建SmartClient工程的时候创建Layout项目)。 打开ModuleController.cs,在ExtendToolStrip方法中将一个定义好的按钮加入先前定义好的ButtonsBar中。 ToolStripButton element = new ToolStripButton() //add code here to inital element. WorkItem.UIExtensionSites[Constants.UIExtensionSiteNames.ButtonsBar].Add(new ToolStripButton()); 到目前为止,我们已经将一个按钮加到一个UIExtensionSite中,下一步我们将介绍如何使加入的按钮响应鼠标点击事件,并调用相应的方法。 在CAB中,我们可以使用Command模式来实现事件响应,打开新建模块的Constants.CommandNames类,在该类中,将该按钮鼠标响应事件命令名定义为一个常量: public const string TestButtonClick= "TestButtonClick"; 在ModuleController类中的ExtendToolStrip方法中,加入如下代码: WorkItem.Commands[Constants.CommandNames.TestButtonClick].AddInvoker(element, "Click"); 下面我们将介绍如何将Command绑定到一个方法 在CAB中,我们使用AOP来实现Command方法绑定 [CommandHandler(CommandNames.TestButtonClick)] CommandHandler是CAB中预订义的Attribute,用来申明事件处理方法。 当我们将模块相关的界面元素加到UIExtensionSite中时,如果每个模块自己添加的话,这要求每个模块开发人员需要了解Infrastructure模块的一些细节设计和实现,这对于一个大型应用开发来说是降低效率的,同时也会有很多的冗余代码。因此,我们可以将Infrastructure中的实现细节进行封装,以接口的形式暴露给各个模块,这样业务模块开发人员可以只关心自己本身的业务需求开发,而不用关心基础模块的具体实现,也减少出错的可能。一、添加一个UIExtensionSite
二、注册UIExtensionSite
三、添加一个界面元素到UIExtensionSite中
四、将鼠标响应事件绑定到一个Command
五、书写Command处理函数
public void OnTestButtonClick(object sender, EventArgs e)
{
MessageBox.Show("Successful");
}后续:
2007年8月30日星期四
第四章 如何使用UIExtensionSites
订阅:
博文评论 (Atom)
没有评论:
发表评论