1.1. UIElement
1.1.1. 接口定义
图 2?1 IUIElementAdapterFactoryCatalog
其中UIElementAdapterFactoryCatalog是CAB中提供的默认实现
图 2?2 IUIElementAdapterFactory
CompositeUI.WinForms中有一个实现了该接口的ToolStripUIAdapterFactory,用以提供菜单或工具条的实现
图 2?3 IUIElementAdapter
其中UIElementAdapter是CAB中提供的抽象泛型实现
1.1.2. 接口协作
图 2?4 接口调用关系
图 2?5 GetFactory的默认实现
因此在建立我们自己的UI时,需要至少实现两个类,用于实现IUIElementAdapterFactory和IUIElementAdapter,然后在系统初始化期间把我们自己的Factory加入到服务集合中,代码如下所示:
protected override void AfterShellCreated()
{
base.AfterShellCreated();
IUIElementAdapterFactoryCatalog catalog = RootWorkItem.Services.Get<IUIElementAdapterFactoryCatalog>();
catalog.RegisterFactory(new ClickableTreeViewAdapterFactory());
// both main menus should have their items added to the root nodes collection
RootWorkItem.UIExtensionSites.RegisterSite(UIExtensionConstants.MAINMENU, Shell.MainNavigationTree);
RootWorkItem.UIExtensionSites.RegisterSite(UIExtensionConstants.MAINSTATUS, Shell.mainStatusStrip);
// Load the menu structure from App.config
UIElementBuilder.LoadFromConfig(RootWorkItem, Shell.MainNavigationTree);
}
其中ClickableTreeViewAdapterFactory是我们UI实现类。